Angularjs:这是使用控制器和指令的正确方法吗?

时间:2014-09-19 09:08:35

标签: angularjs angularjs-directive

通常,指令将使用范围中的数据,例如:

<div my-directive 
     data-x='x' 
     data-y='y'
     data-z='z'
     ...>
</div>

但是,该指令的参数增长得非常快。所以我把它们放在一个模型类中。 所以我的每个指令都有它自己的模型类。

<div my-directive 
     data-model='myDirectiveModel'>
</div>

在控制器中,我只需要设置

$scope.myDirectiveModel = { 
    x: 100.
    y: 200,
    add: function(){
       return this.x + this.y;
    }
};

这是使用控制器和指令的正确方法吗?

1 个答案:

答案 0 :(得分:1)

它确实是将数据传递给指令的一种更清晰的方式,而不是在标记中有很多属性。

但是我会建议Angular的一个好处是它的声明性语法。如果您始终并且完全按照您的建议行事,那么当您在几个月内回读您的标记时,您将不得不深入研究代码以查看正在发生的事情。在标记中更明确可以节省一些时间。例如,当您这样做时:

<div my-directive show-chickens="yes" chimp-count="monkeys" />
当您阅读标记时,

会对您隐藏。

但是,如果您对您的方法感到满意并希望继续,我只会将模型声明为指令属性的值,如此...

<div my-directive='myDirectiveModel' />

只是为了让它更干净。