2016-03-20 3 views
0

Ich habe eine ng-repeat wie folgt aus:Ng-Klick Ändern Schlüssel, Wert-Paar

<div ng-app="myApp" ng-controller="Ctrl"> 
{{ctrlTest}}<hr/> 
<div ng-repeat="elements in filter"> 
    <div> 
     <li ng-repeat="(key,value) in filter.producers" ng-show="value"> 
      {{key}}<a ng-click="filter.producers.key=false"> X</a> 
     </li> 
    </div> 
    {{filter.producers}} 
</div> 

angular.module('myApp', []) 
.controller('Ctrl', function($scope) { 
    $scope.ctrlTest = "Filters"; 
     $scope.filter = {"producers": {"Ford":true,"Honda":true,"Ferrari":true}} 
}); 

Ich versuche, eine machen ng Sie auf, dass jedes Etikett auf false gesetzt würde wenn ich auf einen Link klicke, aber ich habe es nicht richtig gemacht, da die Schlüsselwerte nicht festgelegt sind (sie sollten als Variablen behandelt werden).

Bisher habe ich es auf seine Art versucht.

http://jsfiddle.net/Joe82/wjz8270z/5/

Vielen Dank im Voraus!

Ps: Ich kann die JSON-Struktur nicht ändern.

Antwort

2

Sie müssen nur das Element des Objekts durch seine Schlüssel zuzugreifen, um sicherzustellen, dass würde es Hinweise nicht verloren gehen & Bindung funktioniert

<li ng-repeat="(key,value) in filter.producers" ng-show="value"> 
    {{key}}<a ng-click="filter.producers[key]=false"> X</a> 
</li> 

Forked Fiddle

+0

Danke, das war genau das, was ich gesucht habe! – Joe82

+0

@ Joe82 Gut zu wissen, dass. Danke :-) –

1

Sie rufen auch eine Funktion und Sollwert falsch

HTML

<li ng-repeat="(key,value) in filter.producers" ng-show="value">{{key}} {{value}}<a ng-click="setValue(key)"> X</a> 

JS

$scope.setValue = function(key){ 
    $scope.filter.producers[key.toString()] = false; 
} 

siehe Link http://jsfiddle.net/wjz8270z/8/

+1

Danke, ich behalte den anderen als die richtige Antwort, da es straighter war, aber dieser ist auch gültig. – Joe82

Verwandte Themen