通常,指令将使用范围中的数据,例如:
<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;
}
};
这是使用控制器和指令的正确方法吗?
答案 0 :(得分:1)
它确实是将数据传递给指令的一种更清晰的方式,而不是在标记中有很多属性。
但是我会建议Angular的一个好处是它的声明性语法。如果您始终并且完全按照您的建议行事,那么当您在几个月内回读您的标记时,您将不得不深入研究代码以查看正在发生的事情。在标记中更明确可以节省一些时间。例如,当您这样做时:
<div my-directive show-chickens="yes" chimp-count="monkeys" />
当您阅读标记时,会对您隐藏。
但是,如果您对您的方法感到满意并希望继续,我只会将模型声明为指令属性的值,如此...
<div my-directive='myDirectiveModel' />
只是为了让它更干净。