Angularjs和过滤器

时间:2013-08-25 17:48:13

标签: javascript angularjs filtering

我有一本字典:

{ "69": true, "72": true, "97": true, "113": false, "136": true, "189": false, "396": true, "404": false, "454": false }

如何使用angularjs按值过滤此数据?我需要得到这个(只有真实):

{ "69": true, "72": true, "97": true, "136": true,  "396": true}

2 个答案:

答案 0 :(得分:0)

听起来你正试图在代码方面获得一个列表,而不是模板。

var checked = {};
for(var key in $scope.boxes){
    if($scope.boxes[key])
        checked[key] = true; // true or $scope.boxes[key], which in your case will be true
}
// checked will be { "69": true, "72": true, "97": true, "136": true,  "396": true}

根据您是否需要随每次检查不断更新此值,您可能需要将checked放入$scope$watch $scope.boxes,运行此项每次改变。

如果您在做某事之前只需要检查的内容,最好在做之前找到所检查的内容。只需将$scope.boxes传递给此人:

function findChecked(obj){
    var checked = {};
    for(var key in obj){
        if(obj[key])
            checked[key] = true; // true or obj[key], which in your case will be true
    }
    return checked;
}

答案 1 :(得分:0)

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

app.controller('MainCtrl', function($scope) {
    $scope.item = { "69": true, "72": true, "97": true, "113": false, "136": true,
    "189":false, "396": true, "404": false, "454": false }
    $scope.getValues = function(item)
    {
        var ary = [];
        for(var key in item){
            if(item[key])
                 ary.push(key);
    }
    return ary;
});
   
html:
    <li ng-repeat='c in getValues(item)'>
     {{c}}
    <li>