我想根据页面上两个字段的组合自动填充日期字段。
主页是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 });
}
});
});
});
答案 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
}