是否可以为变量分配函数,然后用范围触发它?

时间:2014-01-25 17:12:52

标签: angularjs

我有一个分配给变量的函数。然后我将此变量赋值给$scope,希望它将调用该函数。但它不起作用:

var func = myFunction("argument");
$scope.func;

我也尝试过:

var func = myFunction("argument");
$scope[func];

我有办法让这个工作吗?

3 个答案:

答案 0 :(得分:4)

你遗失了一些东西:

    var someFn = function (arg) {
           //do something with arg
    }

然后,您可以将此功能添加到范围:

$scope.fnOnScope = someFn;

然后您可以执行以下功能:

$scope.fnOnScope("argument");

或者,您可以首先将该功能放在示波器上。

答案 1 :(得分:0)

这听起来有点危险(评估“动态”执行的功能),但假设这是你想要的,如果你把功能放在一个对象上应该相当容易。

var availableFunctions = {
   functionToCall: function(arg) {
      console.log(arg);
   }
};

var func = myFunction("argument"); // assume this returns "functionToCall" 
$scope.func = availableFunctions[func]; 

那更接近你想要的吗?

答案 2 :(得分:0)

如果func是已在窗口范围内声明的函数的名称。尝试:

var func = myFunction("argument");
window[func].call($scope);