微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/angularjs/142844.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐