如果我有一个没有模板的 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在这里。