指令中作用域的数组属性在引用时清空

时间:2013-09-24 18:27:52

标签: javascript angularjs angularjs-directive angularjs-scope

我的指示如下:

angular.module('app')
  .directive('chart', function () {
      return {
          template: '<div class="chart"></div>',
          restrict: 'E',
          replace: 'true',
          scope: {
              data: '='
          },
          link: function (scope, element, attrs) {
              console.log(scope);
              console.log(scope.data);
          }
      };});

并从视图中的控制器传递一个数组。

<chart data="array"></chart>

控制台输出如下所示:

Scope {...}
$id: "006"
$parent: Child
$root: Scope
...
data: Array[1]
    0: 10300
    length: 1
    __proto__: Array[0]
this: Scope
__proto__: Object

[]

当在控制台中显示范围对象时,它具有长度为1且条目为“10300”的“data”属性,但是当打印scope.data时,它只是一个空数组'[]'。

为什么呢?我很困惑:))

1 个答案:

答案 0 :(得分:0)

问题是数组在控制器中初始化为[],然后通过$ watch调用的函数填充。由于某种原因,两个控制台输出似乎打印控制器的不同状态。解决方案是在控制器中调用一次函数,以便立即使用值初始化数组。