AngularJS指令 - 传递选项对象与单独属性的优缺点?

时间:2014-11-03 08:06:24

标签: javascript angularjs

假设我正在为散点图创建一个指令,该散点图应具有一整套可配置属性。 据我所知,我可以设置这些个别范围属性:

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 个答案:

答案 0 :(得分:1)

如果要覆盖一个或两个参数,多个属性可能是一个很好的解决方案。我个人喜欢这个对象&#34; pattern&#34;因为它保留了所有内容,我可以从控制器更新模型而无需触及我的HTML。

取决于您希望如何更新模型变量。您是通过控制器/范围方法还是通过.attr()(或其他dom操作框架)进行更新?归结为你的需求,但我认为使用一个物体最适合于提升。