Javascript AngularJS:设置过滤对象属性值不会';t在更改时自动更新

Javascript AngularJS:设置过滤对象属性值不会';t在更改时自动更新,javascript,angularjs,Javascript,Angularjs,我在作用域上有一个数组,用于填充一个带有复选框的ng repeat 我在一个对象中有一个属性,我正试图将该属性设置为包含由已选中的ng repeat中的复选框过滤的数组 基本HTML: <div ng-controller="MyCtrl"> <ul> <li ng-repeat="box in boxes"><input type="checkbox" ng-model="box.checked" ng-click="testi

我在作用域上有一个数组,用于填充一个带有复选框的ng repeat

我在一个对象中有一个属性,我正试图将该属性设置为包含由已选中的ng repeat中的复选框过滤的数组

基本HTML:

<div ng-controller="MyCtrl">
    <ul>
        <li ng-repeat="box in boxes"><input type="checkbox" ng-model="box.checked" ng-click="testingOnly()"/> {{box.label}}</li>
    </ul>
    <div ng-repeat="object in objects.prop1">{{object.label}}</div>
    <div ng-repeat="object in objects.prop2">{{object.label}}</div>
</div>
JSFiddle:

我想我还不明白角度是如何工作的。我希望将这两部分连接在一起,objects.prop2将在不编写任何附加帮助函数的情况下进行更新


是否有可能做到这一点(通过模型附件/标记中的某些内容/等等),或者每次单击复选框时,我都必须运行helper函数?

为什么不这样做,并使用双向绑定,更简单、更清晰,我想:


我认为功能性的方式才是前进的方向。另一个选择是对
$watch
进行深入查看,查看
框中的更改,但这将不必要地耗费精力,我认为该功能现在就可以了。我一直在试图避免使用$watch之类的东西,就像我一直试图避免使用jQuery一样……在仍然试图理解基本知识时,似乎最好避免使用它:DHmm,如果我理解它的工作方式,我认为它不适合我的情况。我需要返回多个潜在的选择,但您的功能更像是一个单选按钮,其中{{selection.value}}将永远是一件事。下面是一个更新的提琴,其中有我正在做的更详细的想法:
function MyCtrl($scope, $filter) {
    $scope.boxes = [{label: 'Mon'}, {label: 'Tue'}, {label: 'Wed'}, {label: 'Thu'}, {label: 'Fri'}, {label: 'Sat'}, {label: 'Sun'}];

    $scope.objects = {
        prop1: [{label: 'You have chosen the following days:'}],
        prop2: $filter('filter')($scope.boxes, {checked: true})
    }

    $scope.testingOnly = function() {
     $scope.objects.prop2 = $filter('filter')($scope.boxes, {checked: true});
    }
}
<div ng-app="myApp">
<div ng-controller="MyCtrl">
    <ul>
        <li ng-repeat="box in boxes">
            <input type="checkbox" ng-model="selection.value" ng-true-value="{{box.label}}" ng-false-value="" />{{box.label}}</li>


    </ul>
        <div ng-repeat="object in objects.prop1">{{object.label}}</div>{{selection.value}}

</div>

</div>
angular.module('myApp', [])

.controller("MyCtrl", function($scope, $filter) {
    $scope.name = 'Superhero';
    $scope.boxes = [{
        label: 'something else'
    }, {
        label: 'world'
    }]; 
    $scope.selection = {};
    $scope.objects = {
        prop1: [{
            label: 'hello'
        }]
    };

});