2015-06-09 9 views
5

Mam następujący kod HTMLng-ng lub jeżeli sprawdzono dopasowanie od wartości oddzielonych przecinkami

<!doctype html> 
<html lang="en"> 
<head> 
<meta charset="UTF-8"> 
<title>Example - example-ngModel-getter-setter-production</title> 
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script> 
<script src="app.js"></script> 

</head> 
<body ng-app="getterSetterExample"> 
<div ng-controller="ExampleController"> 
<form name="userForm"> 

<label ng-repeat="id in ids"> 
    <input type="checkbox" 
      value="{{id.id}}" 
      ng-checked="id.id == csv"> {{id.id}} 
</label> 

</form> 
</div> 
</body> 
</html> 

a kontroler jest

(function(angular) { 
    'use strict'; 
angular.module('getterSetterExample', []).controller('ExampleController', ['$scope', function($scope) { 

$scope.csv = '5,6,76,78'; 
$scope.ids = [ 
    {id:5}, 
    {id:64}, 
    {id:456}, 
    {id:47}, 
    {id:767}, 
    {id:78}, 
    {id:55}, 
    {id:98} 
]; 

}]); 
})(window.angular); 

chcę pole sprawdzane podczas id znaleźć w pliku CSV. Na przykład id 5 a 78 jest w csv więc te dwie wartości wyboru powinna być wybrana początkowo

Tu jest http://plnkr.co/edit/XoW4hARWlzN5iTMuCJW1

Odpowiedz

7

Można zmienić csv do tablicy numer:

$scope.csv = [5,6,76,78]; 
//If you REALLY need it as a string 
$scope.csv = '5,6,76,78'.split(',').map(Number); 

Następnie sprawdzić indeks ID w HTML

<label ng-repeat="id in ids"> 
    <input type="checkbox" 
      value="{{id.id}}" 
      ng-checked="csv.indexOf(id.id) != -1"> {{id.id}} 
</label> 
+1

Pokonałem cię o 23 sekundy: p –

4

Trzeba użyć .indexOf wewnątrz ng-checked wypowiedzi z !=.

Markup

<label ng-repeat="id in ids"> 
    <input type="checkbox" 
      value="{{id.id}}" 
      ng-checked="csv.indexOf(id.id) != -1"> {{id.id}} 
    </label> 

Kod

$scope.csv = '5,6,76,78'.split(','); 

Demo Plunkr

+0

Szczerze mówiąc, ty metoda da Niepoprawny wynik, jeśli csv to '55, 76,78 ', sprawdzi pole wyboru z identyfikatorem: 5, 6, 7, 8, 55, 76, 78: p –

+0

http://plnkr.co/edit/p7cPrfrCeXNTlUuM70e1? p = podgląd –

+0

Więc możesz podzielić Twój ciąg znaków i uzyskać odpowiednią tablicę :) –

1

Trzeba przekonwertować ciąg csv do tablicy,

(function(angular) { 
    'use strict'; 
angular.module('getterSetterExample', []) 
    .controller('ExampleController', ['$scope', function($scope) { 
    $scope.csv = '5,6,76,78'; 
    $scope.csv1 = $scope.csv.split(','); 
    console.log($scope.csv1); 

    $scope.ids = [ 
     {id:5}, 
     {id:64}, 
     {id:456}, 
     {id:47}, 
     {id:767}, 
     {id:78}, 
     {id:55}, 
     {id:98} 
]; 
    $scope.isInArray = function(value) { 
     return $scope.csv1.indexOf(value.toString()) > -1; 
    } 
}]); 
})(window.angular); 

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

+2

To prawie taka sama odpowiedź jak pozostałe dwie, mówiąc po prostu :) –