0
我有一個指令,根據數據加載模板,現在當我加載模板,它碰巧有另一個指令,它只是簡單地不呈現。自定義指令內部自定義指令不會觸發
我試過pririty,transclude,replace和其他任何可能的開關但沒有成功。
任何想法,爲什麼這對根HTML文件的作品,但不是當另一個指令內?
這裏是蹲點。
http://plnkr.co/edit/ORF5zXJGFb3Z9Kb0mNyK?p=preview
我有一個指令,根據數據加載模板,現在當我加載模板,它碰巧有另一個指令,它只是簡單地不呈現。自定義指令內部自定義指令不會觸發
我試過pririty,transclude,replace和其他任何可能的開關但沒有成功。
任何想法,爲什麼這對根HTML文件的作品,但不是當另一個指令內?
這裏是蹲點。
http://plnkr.co/edit/ORF5zXJGFb3Z9Kb0mNyK?p=preview
它不工作的原因是因爲你的瓷磚指令創建一個隔離的範圍,這意味着任何父範圍變量將不會是瓷磚指令的兒童使用。由於'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
}
}
});
謝謝@Clark但是使用服務有點不清楚,你可以編輯plunker並顯示我嗎?這裏的想法是在頁面加載時擁有一個JSON,包括模板的url和每個tile將要使用的所有數據,所以如果我開始將數據傳遞給服務,以便其他指令可以捕獲它,它可能會似乎有點不切實際,並會升級。 –
你說得對,這個解決方案不會像可重用的那樣...讓我想一下。 –