Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果数组中有元素,如何禁用AngularJS中的按钮?_Angularjs - Fatal编程技术网

如果数组中有元素,如何禁用AngularJS中的按钮?

如果数组中有元素,如何禁用AngularJS中的按钮?,angularjs,Angularjs,我有一个对象:model.data 如果此对象有一个问题数组,并且该数组有多个元素,如何禁用按钮 我确实试过: data-ng-disabled="model.questions.length > 0" 但这似乎根本不起作用 编辑:根据帖子和评论修改答案 那么: data-ng-disabled="checkQuestions()" 然后在控制器中: $scope.checkQuestions = function() { if (model.questions.length >

我有一个对象:
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;
  }
};
归根结底,完成这项任务有多种方法;一个表达式、一个函数、一个绑定变量(如这里的各种响应所示)。如果它们都不起作用,那么问题可能在于您的模型。如果您可以消除一些不一致的地方(请参阅我关于询问模型结构的评论……另外,如果阵列中有任何内容,或者仅当阵列中有多个内容时,您是否有兴趣禁用它?),这将有助于解决这一问题

这里有一把小提琴,展示了所有三种方法;你会发现它们都能工作。将你的控制器与小提琴进行比较,看看它是否在一起


创建一个模型,然后将其默认值设置为false。如果数组长度不是空的,则将其值更改为true。然后将模型绑定到按钮的ng disabled属性。

您肯定可以使用表达式而不是函数。但您可以检查数组是否
未定义

<button ng-disabled="model.questions != undefined && model.questions.length > 0"></button>

我无法让@zsong answer正常工作,我不想创建一个只返回数组长度的函数,所以我通过创建另一个返回array.length的作用域变量使它正常工作

$scope.modelQuestionsLength = $scope.model.questions.length;
那我就可以做了

<button ng-disabled="modelQuestionsLength > 0"></button>

我无法获得未定义的工作方式,因此,如果其他人有问题,这对我来说很有效:

<input ng-disabled="fieldsPermittedForEdit.indexOf('postDate') < 0">


在本例中,我正在禁用该字段,除非
字段中存在
postDate

您是否忘记了
ng app
?我有一个ng app。除了回答之外,另一张海报建议我需要创建一个函数。我觉得你的代码很好。你会做小提琴吗?你肯定不需要一个函数。你能发布你的模型是什么样子的吗?你说它是“model.data”,然后你尝试的代码引用了“model.questions”。。。问题数组是“model”的直接子级还是“data”的子级(即应该是“model.data.questions”)?好的,我现在明白了。所以我需要一个函数来进行检查。还有“有一系列问题”:-)我想知道我是否应该把它作为一个带参数的函数,这样我就可以在多个地方使用它。你知道为什么AngularJS不包括像计数这样的功能而不是调用函数吗?没有必要调用函数;表达式是允许的。我只是想说这是实现同样目标的另一种方式,看看你的报告是否成功。如果表达式和函数都不起作用,那么问题很可能出在你的模型上(请参阅我在你的帖子中关于让你向我们展示你的模型的评论)。请在回答中包括你需要一个函数来实现这一点。你不能只用一个表达式。谢谢