Смотреть несколько атрибутов не работает Angular JS - PullRequest
0 голосов
/ 29 августа 2018

Я хочу автоматически заполнить поле даты на основе комбинации двух полей на моей странице. Главная страница - 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 });
                           }
            });

        });
    });

1 Ответ

0 голосов
/ 29 августа 2018

Вы можете посмотреть массив выражений, используя $ watchGroup. Но в вашем случае вы можете просто посмотреть vm.institution.employees и перенести дополнительную логику в обратный вызов.

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