я указал функцию в моем контроллере, как это:IIFE в AngularJS
$scope.myFunction = function(){ console.log('test'); }
Я хочу, чтобы эта функция должны быть включена, когда переключатель был изменен. Поэтому я применяю нг-изменения на выбора элемента, как это:
<select ng-options="..." ng-model="..." ng-change="myFunction();"></select>
Но я также хочу, чтобы функция туРипсЫоп должна быть включена, когда моя страница загружается. Так что я подумал, чтобы превратить свою функцию в IIFE:
($scope.myFunction = function(){ console.log('test'); }());
Однако, теперь функция включается только на PageLoad и не нг-изменений. я заметил, что когда я изменяю скобку, функция также получает вызвана нг-изменения:
($scope.myFunction = function(){ console.log('test'); })();
Может кто-нибудь объяснить, почему это даже вопросы?
Спасибо большое!
Первый вызов не является IIFE, второй. – helpermethod
@helpermethod в соответствии с этой статьей http://benalman.com/news/2010/11/immediately-invoked-function-expression/, обе версии - это IIFE, с небольшими различиями. Такие параны обычно указывают, что выражение функции будет немедленно вызывается, а переменная будет содержать результат функции, а не сама функция. Это может спасти кого-то, читающего ваш код, проблемы с прокруткой вниз до того, что может быть очень длинным выражением функции, чтобы увидеть, было ли оно вызвано или нет. ' – Alex