稍后在我的代码中调用IIFE

时间:2017-05-26 14:25:59

标签: javascript angularjs onclick angularjs-ng-click iife

我想立即调用函数,然后在事件(单击)上调用,以传递参数。

该片段一直有效,直到我将该函数($ scope.appFunctions.testBtn)变成了一个iife。

  • 这是因为匿名函数的范围现在是生命,而不是变量吗?
  • 我如何解决这个问题?

查看代码段

<button type="button" ng-click="appFunctions.testBtn('filterStr')">testBtn</button>

控制器代码段

$scope.appFunctions.testBtn = (function(filterStr){
  alert("testBtn Clicked");
})();

3 个答案:

答案 0 :(得分:3)

现在在您的代码中,$scope.appFunctions.testBtn是函数执行的结果,undefined。并将此undefined传递给ng-click指令。这样做会不容易吗?

$scope.appFunctions.testBtn = function (filterStr) {/*...*/}
$scope.appFunctions.testBtn();

绑定后立即调用它,它适用于ng-click

答案 1 :(得分:2)

在您的情况下,该函数不返回任何内容,因此将未定义的值分配给$ scope.appFunctions.testBtn。这就是为什么它会在以后调用时失败。

我会删除iife并在声明之后调用该函数。

答案 2 :(得分:1)

如果您的原始函数没有返回任何内容,您可以从IIFE返回相同的函数。

$scope.appFunctions.testBtn = (function testBtn(filterStr){ 
    alert("testBtn Clicked"); 
    return testBtn;
})();