Javascript AngularJS:设置过滤对象属性值不会';t在更改时自动更新
我在作用域上有一个数组,用于填充一个带有复选框的ng repeat 我在一个对象中有一个属性,我正试图将该属性设置为包含由已选中的ng repeat中的复选框过滤的数组 基本HTML: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
<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'
}]
};
});