2013-09-24 210 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調用的函數進行填充。出於某種原因,兩個控制檯輸出似乎打印控制器的不同狀態。解決方法是在控制器中調用一次函數,以便立即使用值初始化數組。