1

我是 Angular JS 的新手,所以我的问题可能很简单,但实际上我还没有找到解决方案。

我想知道是否可以从外部控制器访问一个函数(在指令中的链接函数内)。我正在使用一个指令来控制指令所需的一些变量,我需要从控制器访问其中一个变量。我试图在指令中创建一个函数:

    scope.testArray = [{id=1, text="test1"},{id=2, text="test2"}];        
    scope.getTestArray = function () {
          return scope.testArray()
    };

从我的控制器我想这样称呼它:

    var testArray = scope.getTestArray()

但它表示元素(范围)不存在 getTestArray。我认为这是因为对指令内范围变量的更改从控制器中不可见。那么,有没有办法实现我想要做的事情?

谢谢你能给我的帮助

4

1 回答 1

1

您的控制器在指令被加载之前被实例化。您可以通过执行以下操作简单地延迟对指令函数的调用:

$timeout(function(){
    var testArray = $scope.getTestArray()
},1000);

或者你不需要将它包装在一个函数中。只需这样做:

$timeout(function(){
    var testArray = $scope.testArray;
},1000);
于 2013-08-23T08:05:18.967 回答