2013-09-24 149 views
1
被清空

我的指令看起来像这样:阵列属性在参考

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',但是当scope.data被打印时,它只是一个空数组''''。

为什么?我很困惑:)

+1

似乎在为我工作http://plnkr.co/edit/nwmFlfR1nl4cStQnsZbT?p=preview –

回答

0

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