我指定的函数在我的控制器是这样的:IIFE在AngularJS
$scope.myFunction = function(){ console.log('test'); }
我要当一个选择框已被更改为触发该功能。所以我申请这样的选择元素NG-变化:
<select ng-options="..." ng-model="..." ng-change="myFunction();"></select>
但我也想被载入我的网页时触发myFunction的功能。所以我想把我的功能变成一个IIFE:
($scope.myFunction = function(){ console.log('test'); }());
但是,现在该功能只在pageload而不是ng-change触发。 我注意到,当我改变了括号,功能也得到由NG-变化触发:
($scope.myFunction = function(){ console.log('test'); })();
有人可以解释为什么这甚至事项?
非常感谢!
第一次调用不是IIFE,第二个是。 – helpermethod 2014-09-03 13:03:33
@helpermethod根据这篇文章http://benalman.com/news/2010/11/immediately-invoked-function-expression/,这两个版本都是IIFE,略有不同'这样的parens通常表明函数表达式将立即被调用,变量将包含函数的结果,而不是函数本身。这可以节省读取你的代码的人不得不向下滚动到可能是一个很长的函数表达式的底部,以查看它是否被调用。“ – Alex 2014-09-03 14:48:29