2016-06-29 5 views
0

У меня есть обработчик события, связанный с элементом ввода с атрибутом 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; 
 
     }); 
 
}

ответ

0
vm.facilityChanged = function() { 
    ... 
} 

Это делает vm.facilityChanged ссылкой на анонимные функции.

vm.facilityChanged = facilityChanged(vm, fsrFactory); 

Однако это вызовы названная функция, facilityChanged, с переменными vm и fsrFactory. Что вы хотите сделать, это ссылка названная функция с vm.facilityChanged, как вы это делали с анонимной функцией.

vm.facilityChanged = facilityChanged; 

function facilityChanged(vm, fsrFactory) { 
    ... 
} 
+0

Эй, как мне передать vm и fsrFactory с контроллера на именованные функции? Vm и fsrFactory не определены в названной функции. Благодарю. – user266909

Смежные вопросы