Если у меня есть директива 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 здесь.