Ng单击更改键,值对

时间:2016-03-20 15:19:08

标签: javascript angularjs angularjs-ng-click

我有这样的重复:

<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}}
});

我正在尝试进行ng-click,在点击链接时将每个标签设置为false,但由于关键值未修复,我无法正确完成(它们应被视为变量)。

到目前为止,我已经按照他的方式尝试过了。

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

提前致谢!

Ps:我无法改变json结构。

2 个答案:

答案 0 :(得分:2)

您只需要通过其键访问对象的元素,以确保引用不会丢失&amp;绑定将起作用

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

Forked Fiddle

答案 1 :(得分:1)

您还可以调用函数并设置值 false

<强> 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;
}

请参阅此链接http://jsfiddle.net/wjz8270z/8/