1

У меня есть массив, содержащий кучу объектов. Если нет объектов, содержащих «истинное» значение для ключа «завершено», я хотел бы отключить кнопку.Угловая кнопка - Включить, только если объект внутри массива заполнен: true

//Here is the format for the array of objects: 

$scope.todos = [{ 
       task:$scope.task, 
       completed: false, 
       localID:Date.now(), 
       display: true 
}]; 

//Here is the button I want to disable:: 

<button ng-click="clear()" class="btn" ng-disabled="">Clear Completed</button> 

Любая помощь приветствуется.

ответ

1

Вы можете разместить фильтр по объекту todos и проверить его длину.

Markup

<button ng-click="clear()" class="btn" (todos | filter: {completed:true}).length < 1> 
    Clear Completed 
</button> 

Working Fiddle

+0

гораздо лучше, чем мое решение .... но нужно, чтобы заставить его работать http://jsfiddle.net/arunpjohny/cp1ttr8t/5/ –

+0

дайте мне одну минуту ... я выясню это –

+0

@ArunPJohny проверить обновленный http://jsfiddle.net/3nxt66b6/ –

3

Вы можете проверить что-то вроде

var app = angular.module('my-app', [], function() {}) 
 

 
app.controller('AppController', function($scope) { 
 
    $scope.todos = [{ 
 
    task: $scope.task, 
 
    completed: false, 
 
    localID: Date.now(), 
 
    display: true 
 
    }]; 
 

 
    $scope.isDisabled = function() { 
 
    return $scope.todos.some(function(item) { 
 
     return item.display === true 
 
    }) 
 
    } 
 

 

 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="my-app" ng-controller="AppController"> 
 
    <input type="checkbox" ng-model="todos[0].display" <br /> 
 
    <button ng-click="clear()" class="btn" ng-disabled="isDisabled()">Clear Completed</button> 
 
</div>

+0

http://jsfiddle.net/arunpjohny/tge6j26e/ –

+0

Хорошее решение ... –

0

вы можете попробовать:

HTML:

<button ng-click="clear()" class="btn" ng-disabled="isDisabled()">Clear Completed</button> 

в контроллере:

$scope.isDisabled = function() { 
     var disabled = true; 
     angular.forEach($scope.todos, function(todo){ 
      if(todo.completed === true){ 
       disabled = false; 
      } 
     }); 
     return disabled; 
    }; 
+0

Рабочий код в PLUNKER: http://plnkr.co/edit/xN9cE5wdywv7BTu6Gt2K?p=preview –

1
ng-disabled="(todos | filter: {completed:true}).length < 1" 
Смежные вопросы