假设我正在为散点图创建一个指令,该指令应该具有一整套可配置属性。 据我所知,我可以设置这些单独的范围属性:
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);
那么,我应该采用哪种方法,为什么?
最佳答案
如果您想覆盖一两个参数,多个属性可能是一个很好的解决方案。就我个人而言,我喜欢对象“模式”,因为它保留了所有内容,并且我可以从 Controller 更新模型,而无需触及 HTML。
也取决于您想要如何更新模型变量。您是否正在使用 Controller /作用域方法或通过 .attr() (或其他 dom 操作框架)进行更新?归根结底取决于您的需求,但我认为使用对象最适合维护。
关于javascript - AngularJS 指令 - 传递选项对象与单独属性的优缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26710090/