2015-12-15 4 views
0

У меня есть ситуация, когда есть флажок 3 («первоначально проверен»). Так как он как 3, он будет использовать ng-repeat в течение 3-х часов и будет делить на это время. Теперь, как только я сниму флажок, он должен отображать div на 2 раза. До сих порполучить значения массива на основе флажка

$scope.items = [ 
    {id: 0, title: "apple",selected:true}, 
    {id: 1, title: "orange",selected:true}, 
    {id: 2, title: "grapes",selected:true},  
]; 

В каждом флажке ng-click я вызывал функциональный тест («яблоко»).

$scope.test = function(vals) { 
    $scope.vl=[]; 
    for(var i=0;i<$scope.items.length;i++) { 
     if($scope.items[i].title == vals) { 
      console.log("dnt push"); 
     } 
     else { 
      $scope.vl.push({ 
       id: $scope.items[i].id, 
       title: $scope.items[i].title, 
       selected:true      
      }); 
     } 
    } 
    console.log("vl array"); 
    console.log($scope.vl); 
} 

Проблема, перед которой я столкнулся, отлично работает для 1-го снятия отметки, но нет, когда я делаю это для множественного снятия отметки. Когда я проверяю unchecked его не загружая div.

В HTML я использую, как,

<div ng-repeat="item in vl"> some tags </div> 
+0

что вы хотите сделать высокоточного? – AlainIb

ответ

2

не совсем уверен, что ваш вопрос, но надеюсь, что мой ответ может дать вам несколько советов.

plunker demo

var app = angular.module('plunker', []); 
 

 
app.controller('MainCtrl', function($scope) { 
 
    $scope.name = 'World'; 
 

 
    $scope.items = [{ 
 
    id: 0, 
 
    title: "apple", 
 
    selected: true 
 
    }, { 
 
    id: 1, 
 
    title: "orange", 
 
    selected: true 
 
    }, { 
 
    id: 2, 
 
    title: "grapes", 
 
    selected: true 
 
    }]; 
 
});
<!DOCTYPE html> 
 
<html ng-app="plunker"> 
 

 
<head> 
 
    <meta charset="utf-8" /> 
 
    <title>AngularJS Plunker</title> 
 
    <script> 
 
    document.write('<base href="' + document.location + '" />'); 
 
    </script> 
 
    <link rel="stylesheet" href="style.css" /> 
 
    <script data-require="[email protected]" src="https://code.angularjs.org/1.4.8/angular.js" data-semver="1.4.8"></script> 
 
    <script src="app.js"></script> 
 
</head> 
 

 
<body ng-controller="MainCtrl"> 
 
    <p>Hello {{name}}!</p> 
 
    <div ng-repeat="item in items"> 
 
    <input type="checkbox" ng-model="item.selected">{{item.title}} 
 
    </div> 
 
    {{items | json}} 
 
</body> 
 

 
</html>

0

Если и только если вы хотите поместить в массив элемент, который проверяются:

http://plnkr.co/edit/DvoPBBvKf3AhYM4qcBhx?p=preview

HTML

<div ng-repeat="item in items"> 
    <input type="checkbox" 
     ng-model="item.selected" ng-click="test(item.title)"> {{item.title}} 
</div> 

контроллер

$scope.test = function(vals) { 
    $scope.vl=[]; 
    $scope.vlChecked=[]; 
    for(var i=0;i<$scope.items.length;i++) { 
    if($scope.items[i].selected) { 
     $scope.vlChecked.push({ 
     id: $scope.items[i].id, 
     title: $scope.items[i].title, 
     selected:true      
     }); 
    } 
    } 

    console.log("vlChecked array"); 
    console.log(JSON.stringify($scope.vlChecked)); 

} 
Смежные вопросы