如果我有一个没有模板的 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. 我只是觉得我让这件事变得太难了。
$parse
为什么隔离范围过大?它对这种事情非常有用:
scope: { "twoway": "=" // two way binding },
这是这个问题的一个非常惯用的角度解决方案,所以这就是我坚持的。