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">

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...