我有一个对象:model.data
如果此对象有一系列问题并且该数组有多个元素,我如何禁用按钮?
我确实尝试过:
data-ng-disabled="model.questions.length > 0"
但这似乎根本不起作用。
我有一个对象:model.data
如果此对象有一系列问题并且该数组有多个元素,我如何禁用按钮?
我确实尝试过:
data-ng-disabled="model.questions.length > 0"
但这似乎根本不起作用。
编辑:根据帖子和评论修改答案
关于什么:
data-ng-disabled="checkQuestions()"
然后在你的控制器中:
$scope.checkQuestions = function() {
if (model.questions.length > 1) { // your question said "more than one element"
return true;
}
else {
return false;
}
};
真正归结为有多种方法可以完成这项任务。一个表达式、一个函数、一个绑定变量(如这里的各种响应所示)。如果它们都不起作用,则问题可能出在您的模型上。如果您可以清除一些不一致之处(请参阅我关于询问模型结构的评论......另外,您是否有兴趣在数组中有任何东西时禁用它,或者只有当数组中有多个东西时才禁用它? ),这将有助于解决这个问题。
这是一个显示所有三种方法的小提琴;你会看到它们都有效。将您的控制器与小提琴进行比较,看看它是否结合在一起。
您绝对可以使用表达式而不是函数。但是您可以检查数组是否为undefined
.
<button ng-disabled="model.questions != undefined && model.questions.length > 0"></button>
我无法让@zsong 回答工作,我不想创建一个函数只是为了返回一个数组长度,所以我通过创建另一个返回 array.length 的范围变量来让它工作。
$scope.modelQuestionsLength = $scope.model.questions.length;
然后我可以做
<button ng-disabled="modelQuestionsLength > 0"></button>
我无法获得未定义的工作方式,所以如果其他人遇到麻烦,这对我有用:
<input ng-disabled="fieldsPermittedForEdit.indexOf('postDate') < 0">
在此示例中,我将禁用该字段,除非数组postDate
中存在该字段。fieldsPermittedForEdit
创建一个模型,然后将其默认值设置为 false。如果您的数组长度不为空,则将其值更改为 true。随后将模型绑定到按钮的 ng-disabled 属性。