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

21 angularjs

我有一个对象: model.data

如果此对象具有一系列问题并且该数组是否包含多个元素,如何禁用按钮?

我试过了:

data-ng-disabled="model.questions.length > 0"
Run Code Online (Sandbox Code Playgroud)

但这似乎根本不起作用.

jlm*_*ald 31

编辑:修改答案以回应帖子和评论

关于什么:

data-ng-disabled="checkQuestions()"
Run Code Online (Sandbox Code Playgroud)

然后在你的控制器中:

$scope.checkQuestions = function() {
 if (model.questions.length > 1) { // your question said "more than one element"
   return true;
  }
  else {
   return false;
  }
};
Run Code Online (Sandbox Code Playgroud)

真正归结为有多种方法可以完成这项任务; 表达式,函数,绑定变量(如此处的各种响应所示).如果它们都不起作用,问题可能在于您的模型.如果你能解决一些不一致的问题(请参阅我关于询问模型结构的评论......),如果数组中有任何内容,或者只有数组中有多个内容,你是否对它有用? ),它将帮助解决这个问题.

这是一个显示所有三种方法的小提琴; 你会发现它们都有效.将您的控制器与小提琴进行比较,看看它是否融合在一起.

http://jsfiddle.net/jlmcdonald/P8qjR/3/

  • 没有必要调用函数; 表达式是允许的.我只是提供更多作为完成相同事情的替代方法,看看你报告的成功.如果表达式和函数都不起作用,问题可能在于您的模型(请参阅我对您的帖子的评论,告诉您我们的模型是什么样的). (2认同)

zs2*_*020 25

你绝对可以使用表达式而不是函数.但是你可以检查阵列是否是undefined.

<button ng-disabled="model.questions != undefined && model.questions.length > 0"></button>
Run Code Online (Sandbox Code Playgroud)