обработчик угловых событий с именованной функцией

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;
      });
}

1 ответ

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 не определены в именованной функции. Благодарю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню