Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 是否可以将函数分配给变量,然后用作用域触发它?_Angularjs - Fatal编程技术网

Angularjs 是否可以将函数分配给变量,然后用作用域触发它?

Angularjs 是否可以将函数分配给变量,然后用作用域触发它?,angularjs,Angularjs,我有一个分配给变量的函数。然后我将这个变量赋值给$scope,希望它能调用这个函数。但它不起作用: var func = myFunction("argument"); $scope.func; 我还尝试: var func = myFunction("argument"); $scope[func]; 有什么方法可以让它工作吗?您缺少一些东西: var someFn = function (arg) { //do something with arg

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

var func = myFunction("argument");
$scope.func;
我还尝试:

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

有什么方法可以让它工作吗?

您缺少一些东西:

    var someFn = function (arg) {
           //do something with arg
    }
然后可以将此函数添加到作用域:

$scope.fnOnScope = someFn;
然后,您可以执行以下功能:

$scope.fnOnScope("argument");

或者,您可以首先将函数放在作用域上。

您缺少一些东西:

    var someFn = function (arg) {
           //do something with arg
    }
然后可以将此函数添加到作用域:

$scope.fnOnScope = someFn;
然后,您可以执行以下功能:

$scope.fnOnScope("argument");

或者,您可以首先将函数放在作用域上。

这听起来有点危险(评估函数以“动态”执行),但假设这是您想要的,那么将函数放在对象上应该相当容易

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

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

这是否更接近您所寻找的内容?

这听起来有点危险(评估函数以“动态”执行),但假设这正是您想要的,将函数放置在对象上应该相当容易

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

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

这与您要查找的更接近吗?

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

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

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

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

我在提出问题时犯了一些错误。变量
func
分配给文本,而不是函数。但是,此文本表示一个函数。这就是为什么我想把它分配给
$scope
。哦,我明白了。所以,func被分配了一个字符串值,它是一个函数的名称,对吗?如果此函数位于作用域上,则可以使用$scope[func]()执行它;要执行的功能必须在这项工作的范围内定义。我在制定问题时犯了一些错误。变量
func
分配给文本,而不是函数。但是,此文本表示一个函数。这就是为什么我想把它分配给
$scope
。哦,我明白了。所以,func被分配了一个字符串值,它是一个函数的名称,对吗?如果此函数位于作用域上,则可以使用$scope[func]()执行它;必须在此工作范围内定义要执行的功能。