Javascript AngularJS-当其键在另一个范围内为true时,更改范围值
我有一个像这样的重复Javascript AngularJS-当其键在另一个范围内为true时,更改范围值,javascript,angularjs,Javascript,Angularjs,我有一个像这样的重复 <li ng-repeat="car in cars"> <p>{{car.model}}</p> <span ng-show="car.check">Update I missed the original requirement to update the value. The easiest way is to watch the filter model from your scope: $scope.$w
<li ng-repeat="car in cars">
<p>{{car.model}}</p>
<span ng-show="car.check">Update
I missed the original requirement to update the value. The easiest way is to watch the filter
model from your scope:
$scope.$watch("filter", function(nv,ov){
angular.forEach($scope.cars, function(car){
car.check = nv.producers[car.model]
})
}, true)
{{car.model}}
更新
我错过了更新值的原始要求。最简单的方法是在您的范围内查看过滤器
模型:
$scope.checkProducerTrue = function(c) {
angular.forEach($scope.filter.producers, function(value, key) {
if (key == c.model) c.check = value;
});
};
我已经更新了你的密码
基本上只是将您的$scope.checkProducerTrue
函数更新为:
使用Angulars'$scope.$watch,您可以“监听”变量中的更改。
我给您留下一个基于JSFIDLE的非常简单的示例。。。你应该优化功能,但我认为想法很清楚
$scope.$watch('filter.producers',函数){
$scope.cars[0]。检查=$scope.filter.producers.Ford;
$scope.cars[1]。检查=$scope.filter.producers.Honda;
$scope.cars[2]。检查=$scope.filter.producers.Ferrari;
},true)
根据我对他的问题的理解,我认为他想根据他的过滤器修改值。是的,他正要删除。现在就在他的JS Fiddle中写一个新的答案谢谢你的回答,但是正如@Mistalis所说的,当生产者范围内的值被更改为完美时,我需要修改cars范围内的值,这就解决了问题,我认为这是最好的方法,所以我会将其标记为有效。我更新了小提琴,你在哪里更改$scope.filter
?似乎您可以通过使用producer change或all$scope.filter来迭代$scope.cars
来实现这一点。我通过一些复选框对其进行了更改,但为了便于理解,我没有将其添加到示例中。因此,我只想手动更改$scope.filter中的值,它会自动影响$scope.carsMight中的相应值。为了清晰起见,我想更新您的问题。真正的问题是如何创建一个函数,根据过滤值更新cars检查值。太棒了!这就是我一直在寻找的。我认为这可能是最好的方法,但问题是我事先不知道$scope.filters.producers的内容(因此它也可能是另一个不同的品牌),所以我无法编写这样的规则:(如果你知道“cars”格式(JSON数组),以及过滤器格式,您可以使用javascript将cars模型与过滤器模型进行比较,并获取过滤器值。如果您有关于这些格式的更多信息,我们可以制作一个通用函数,解析两个数组并匹配值,因此不要害羞,与我们共享RipTheJacker提供的答案已经解决了问题这个方法有问题。谢谢你的帮助!