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提供的答案已经解决了问题这个方法有问题。谢谢你的帮助!