angularjs – 错误:[ngModel:nonassign]表达式是不可分配的

前端之家收集整理的这篇文章主要介绍了angularjs – 错误:[ngModel:nonassign]表达式是不可分配的前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
尝试根据同一行中的另一个值从gridcollection显示列值.
用户可以选择/更改包含具有值的网格的模态中的值.当模态关闭时,值将被传回.在那一刻,我想为“也被称为”设定一个值:

HTML

Also known as: <input type="text" `ng-model="displayValue(displayNameData[0].show,displayNameData[0].value)">`

我在范围上创建了一个函数,只有当’show’值为true时才选择该值:

$scope.displayValue = function (show,val) {
    if (show) {
        return val;
    }
    else {
        return '';
    }
}

但是当我关闭模式时,我会收到一个错误

Error: [ngModel:nonassign] Expression 'displayValue(displayNameData[0].show,displayNameData[0].value)' is non-assignable.

参考文献:http://plnkr.co/edit/UoQHYwAxwdvX0qx7JFVW?p=preview

正如HackedByChinese所提到的,你不能将ng-model绑定到一个函数,所以试试这样:
<input type="text" ng-if="displayNameData[0].show"
                   ng-model="displayNameData[0].value">

或者如果您希望此控件可见,您可以创建指令,添加功能到$解析器,将根据显示设置空值:

angular.module('yourModule').directive('bindIf',function() {
        return {
            restrict: 'A',require: 'ngModel',link: function(scope,element,attrs,ngModel) {
                function parser(value) {
                    var show = scope.$eval(attrs.bindIf);
                    return show ? value: '';
                }

                ngModel.$parsers.push(parser);
            }
        };
    });

HTML:

<input type="text" bind-if="displayNameData[0].show"
                   ng-model="displayNameData[0].value">
原文链接:https://www.f2er.com/angularjs/142844.html

猜你在找的Angularjs相关文章