观察多个属性不起作用的Angular js

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了观察多个属性不起作用的Angular js相关的知识,希望对你有一定的参考价值。

我想根据页面上两个字段的组合自动填充日期字段。主页是Institution,在这个主页面我有一个员工子部分。我想看看子节中的2个字段,我尝试了这个代码,但它无法正常工作。

      $scope.$watch(function () { return vm.institution.employees.length }, function () {
        _.forEach(vm.institution.employees, function (item, index) {
            $scope.$watch(vm.institution.employees[index].occupation,vm.institution.employees[index].salary, function (newValue, oldValue) {
                if (newValue[0] != oldValue[0]) {
                    vm.xx = 'test';
                }
            },true);

        });
    });

在这个相同的机构页面员工子部分我正在使用下面的代码观看单个属性它正常工作,但看着2不起作用。

    $scope.$watch(function () { return vm.institution.employees.length }, function () {
        _.forEach(vm.institution.employees, function (item, index) {
            debugger;
            item.employeeDesignation = _.filter(vm.desginations, { id: item.designationTypeId });
            $scope.$watch(function () { return vm.institution.employees[index].designationTypeId }, function (newValue, oldValue) {
                if (newValue != oldValue) {
                    item.employeeDesignation = _.filter(vm.desginations, { id: newvalue });
                           }
            });

        });
    });
答案

您可以使用$ watchGroup观看一系列表达式。但在您的情况下,您可以只观看vm.institution.employees并将其他逻辑移至回调。

$scope.$watch('vm.institution.employees', function(newValue, oldValue) {
  if (newValue.occupation != oldValue.occupation || newValue.salary != oldValue.salary) {
    vm.xx = 'test';
  }
});

以上是关于观察多个属性不起作用的Angular js的主要内容,如果未能解决你的问题,请参考以下文章

为啥带有多个可观察对象的 RxSwift concat 似乎不起作用?

多个 Angular 库在生产模式下不起作用

Javascript代码片段在drupal中不起作用

Angular JS:输入 [radio] 不起作用

来自活动xml的片段中的findViewById属性不起作用[重复]

Angular Js Datatable:在响应式插件中,ng-click 在缩放(折叠)模式下不起作用