2013-07-02 239 views

回答

0

它不工作的原因是因爲你的瓷磚指令創建一個隔離的範圍,這意味着任何父範圍變量將不會是瓷磚指令的兒童使用。由於'mainAreaChart'變量是在MainCtrl中定義的,所以模板tile2.html不可訪問它。

至於如何解決這個問題,可以採取多種方式。最簡單的方法是將你需要的數據抽象出來構建你的圖表到服務中:

app.factory('ChartData', function(){ 
    return { 
     get : function(id){ 
      return //Your data based on logic 
     } 
    } 
}); 

app.directive('chart', function(ChartData){ 
    return { 
     //Configuration properties 
     scope : { 
      chartDataKey : '@' 
     }, 
     link : function(scope, element, attrs){ 
      var data = ChartData.get(scope.chartDataKey); 
      //More logic 
     } 
    } 
}); 
+0

謝謝@Clark但是使用服務有點不清楚,你可以編輯plunker並顯示我嗎?這裏的想法是在頁面加載時擁有一個JSON,包括模板的url和每個tile將要使用的所有數據,所以如果我開始將數據傳遞給服務,以便其他指令可以捕獲它,它可能會似乎有點不切實際,並會升級。 –

+0

你說得對,這個解決方案不會像可重用的那樣...讓我想一下。 –