【发布时间】:2013-09-23 19:33:11
【问题描述】:
如果我有一个没有模板的 AngularJS 指令,并且我希望它在当前范围内设置一个属性,那么最好的方法是什么?
例如,计算按钮点击次数的指令:
<button twoway="counter">Click Me</button>
<p>Click Count: {{ counter }}</p>
使用指令将点击计数分配给双向属性中的表达式:
.directive('twoway', [
'$parse',
function($parse) {
return {
scope: false,
link: function(scope, elem, attrs) {
elem.on('click', function() {
var current = scope.$eval(attrs.twoway) || 0;
$parse(attrs.twoway).assign(scope, ++current);
scope.$apply();
});
}
};
}
])
有没有更好的方法来做到这一点?从我读过的内容来看,一个孤立的范围会过大,但我需要一个子范围吗?除了使用$parse之外,还有没有更简洁的方法可以写回指令属性中定义的范围变量。我只是觉得这太难了。
完整的 Plunker here.
【问题讨论】:
-
这个问题似乎跑题了,因为它是关于代码审查的。
-
或者代码架构。我认为这是一个很好的问题。
标签: javascript angularjs angularjs-directive