2014-11-03 34 views
1

假設我正在爲散佈圖創建一個指令,該指令應該有一整套可配置的屬性。 據我所知,我可以設置這些個人scope屬性:AngularJS指令 - 傳遞選項對象vs單獨屬性的優缺點?

directive('scatterChart', ['$http', function($http){ 
scope: { 
    data: "=?", 
    selected : "=?", 
    indicatorX : "=?", 
    indicatorY : "=?", 
    indicatorSize : "=?" 
} 

或者通過與選項的對象:

directive('scatterChart', ['$http', function($http){ 
scope: { 
    model: "=?", 
} 

在後一種情況下,我也不會回去和調整我的標記,這樣就足夠了:

<div class="scatter-chart" model="scatter.options"> 

我的指令內就足夠觀看物體觸發重新渲染:

scope.$watch('model', function(newVal, oldVal) { 
    render(); 
}, true); 

那麼,我應該採用哪種方法,爲什麼?

回答

1

如果您想覆蓋一個或兩個參數,多個屬性可能是一個很好的解決方案。就我個人而言,我喜歡對象「模式」,因爲它保留了所有內容,我可以在不觸摸我的HTML的情況下更新控制器的模型。

取決於您希望如何更新模型變量。你正在通過控制器/範圍方法或通過.attr()(或其他dom操作框架)更新嗎?歸結爲您的需求,但我認爲使用一個對象最適合於保姆。

相關問題