Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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
Javascript 当对象中的所有变量都为false时,AngularJs禁用按钮_Javascript_Angularjs - Fatal编程技术网

Javascript 当对象中的所有变量都为false时,AngularJs禁用按钮

Javascript 当对象中的所有变量都为false时,AngularJs禁用按钮,javascript,angularjs,Javascript,Angularjs,我有一个可以点击的按钮列表。当没有选择任何按钮时,我想在其他地方禁用一个按钮 这是按钮,该类是从该代码添加的- <button type="button" ng-repeat="service in services_data track by service.id" ng-class="showDetails[service.id] ? 'bg-success': 'bg-default'" ng-init="selected[service.id] = false" ng-click=

我有一个可以点击的按钮列表。当没有选择任何按钮时,我想在其他地方禁用一个按钮

这是按钮,该类是从该代码添加的-

<button type="button" ng-repeat="service in services_data track by service.id" ng-class="showDetails[service.id] ? 'bg-success': 'bg-default'" ng-init="selected[service.id] = false" ng-click="showDetails[service.id] = showDetails[service.id]; select_check(showDetails)" class="list-group-item item_buttons">
  <ul class="list-unstyled">
     <li>{{service.name}} - {{service.est_time_mins}} mins. | ${{service.price}}</li>
     <li>{{service.style}}</li>
  </ul>
</button>
单击按钮时,会触发切换变量showDetails…选择按钮时返回TRUE,取消选择按钮时返回FALSE

因此,当所有按钮都处于错误状态时,我希望禁用一个按钮

那么,我可以编写一个函数来检查每个按钮的showDetails变量吗


尝试了一系列循环,在每个按钮和一些if/else上循环,但我无法让任何东西正常工作,甚至无法真正关闭。

我编写了一个代码,可以帮助您:

HTML:

更新

也可以在单独的数组中处理逻辑

更新2

没有ECMAScript 2015语法


试试这个。。。在脚本中放置以下函数。它将扩展JavaScript数组原型

Array.prototype.all = function (fn) {
   var b = true;
   var arr = this;
   fn = fn || function (i) {return true};
   arr.forEach(function (item) {
       if (fn(item) == false) b = false;
   });
   return b;
}
接下来,根据条件将其作为您希望禁用的按钮

<button class="other-button" ng-disabled="services_data.all((service) => showDetails[service.id])">OTHER BUTTON</button>
<!--If your browser supports ECMA SCRIPT 6, i guess
或者为了安全

<button class="other-button" ng-disabled="services_data.all(function (service) { return showDetails[service.id] })">OTHER BUTTON</button>
<!--If your browser does NOT support ECMA SCRIPT 6

谢谢,这看起来很接近,但是当您单击“选择一个按钮”,然后再次单击时,它不会取消选择该按钮。您只需更改“选择”按钮。ng click=service.selected=!服务。已选择。作为回应,我编辑了代码。@SeanAnderson再次尝试JSFIDLE谢谢。这很有效。唯一需要弄清楚的是,我正在从一个不包含所选属性的数据库中提取一组数据,并且我无法将其添加到数据库中。因此,我正在尝试将servicesData.selected更改为只查看包含在ng repeat中的$scope.selected变量。这有意义吗?只要稍微弄乱一下,我应该能够弄明白。任何时候@SeanAnderson,您都可以在单独的数组更新原始响应中隔离逻辑:这两个禁用ng的代码都会导致解析/语法错误。我试着把剧本包括在里面和外面。似乎不起作用。不过我很感激。
<button class="other-button" ng-disabled="services_data.all((service) => showDetails[service.id])">OTHER BUTTON</button>
<!--If your browser supports ECMA SCRIPT 6, i guess
<button class="other-button" ng-disabled="services_data.all(function (service) { return showDetails[service.id] })">OTHER BUTTON</button>
<!--If your browser does NOT support ECMA SCRIPT 6