我有一个事件处理程序附加到具有ng-change属性的input元素。当我为处理程序分配一个未命名的函数时,单击按钮会起作用。当我为处理程序分配命名函数时,浏览器将尝试在加载时解析命名函数中的所有参数。似乎必须使用未命名的函数声明javascript事件处理程序。这两者有什么区别?感谢。
//this doesn't fire the event handler
//vm.facilityChanged = facilityChanged(vm, fsrFactory);
//this works
vm.facilityChanged = function() {
vm.postStatus = undefined;
vm.services = undefined;
vm.roles = undefined;
vm.services = fsrFactory.service().query({
FacilityID: vm.facility
})
.$promise.then(
function(data) {
vm.services = data;
});
}
function facilityChanged(vm, fsrFactory) {
vm.postStatus = undefined;
vm.services = undefined;
vm.roles = undefined;
vm.services = fsrFactory.service().query({
FacilityID: vm.facility
})
.$promise.then(
function(data) {
vm.services = data;
});
}

答案 0 :(得分:0)
vm.facilityChanged = function() {
...
}
这使vm.facilityChanged
成为对匿名函数的引用。
vm.facilityChanged = facilityChanged(vm, fsrFactory);
但是,此使用变量facilityChanged
和vm
调用命名函数fsrFactory
。您想要做的是引用使用vm.facilityChanged
的命名函数,就像使用匿名函数一样。
vm.facilityChanged = facilityChanged;
function facilityChanged(vm, fsrFactory) {
...
}