У меня есть обработчик событий, прикрепленный к элементу ввода с атрибутом ng-change. Когда я назначаю обработчик с неназванной функцией, щелчок кнопки работает. Когда я назначаю обработчик с именованной функцией, браузер попытается разрешить все параметры в названной функции во время загрузки. Кажется, обработчик события 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;
});
}
vm.facilityChanged = function() {
...
}
Это делает vm.facilityChanged
ссылкой на анонимную функцию.
vm.facilityChanged = facilityChanged(vm, fsrFactory);
Однако, это вызывает указанную функцию, facilityChanged
, с переменным vm
и fsrFactory
. То, что вы хотите сделать, это ссылка на именованную функцию с помощью vm.facilityChanged
как и с анонимной функцией.
vm.facilityChanged = facilityChanged;
function facilityChanged(vm, fsrFactory) {
...
}