テンプレートのない AngularJS ディレクティブがあり、現在のスコープにプロパティを設定したい場合、それを行う最善の方法は何ですか?
たとえば、ボタンのクリックをカウントするディレクティブは次のとおりです。
<button twoway="counter">Click Me</button>
<p>Click Count: {{ counter }}</p>
two way 属性の式にクリック数を割り当てるディレクティブを使用すると、次のようになります。
.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
。私はこれを難しくしすぎているように感じます。
フルプランカーはこちら。