以角度更新过滤值

时间:2015-10-16 15:01:21

标签: angularjs

我有数据的数组,如:

$scope.fathersArr = [
    { name: 'Joe', children:
         [
             { name:'Ammy' },
             { name:'Jane'},
             { name:'Honey'}
         ]
    },
    { name: 'Joe', children:
         [
             { name:'Tonny' },
             { name:'Katty'},
             { name:'Jonny'}
         ]
    }
];

我需要从数组中获取值,我将其过滤为:

$scope.bestFather = $filter('filter')($scope.fathersArr, { name: 'Make'})[0];

我以类似的方式呈现数据:

<li ng-repeat='child in bestFather.children'>{{child.name}}</li>

当我更新$scope.fathersArr时,我的过滤值未更新。 我认为,$filter不支持双向绑定。那么如何更新我的过滤值呢?

1 个答案:

答案 0 :(得分:0)

$ scope.bestFather不会自动重新评估。您需要在$ scope.fathersArr上添加一个监视,然后再次执行过滤以更新该值。

$scope.$watch('fathersArr', function onFathersArrayChanged(fathersArr){
    $scope.bestFather = $filter('filter')(fathersArr, { name: 'Make'})[0];
});

我很好奇为什么你不在模板中使用过滤器。它将自动为您重新评估。