观看多个属性不起作用Angular js

时间:2018-08-29 16:13:49

标签: javascript .net angularjs angularjs-scope

我想根据页面上两个字段的组合自动填充日期字段。 主页是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 :(得分:0)

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

const isObj = x => typeof x === 'object'

const common = (a, b) => {
  let result = {}

  if (([a, b]).every(isObj)) {
    Object.keys(a).forEach((key) => {
      const value = a[key]
      const other = b[key]

      if (isObj(value)) {
        result[key] = common(value, other)
      } else if (value === other) {
        result[key] = value
      }
    })
  }

  return result
}