JavaScript の AngularJS と MV* パターンは初めてです。私は最近プロジェクトで AngularJS をいじっていましたが、次のような状況を回避する方法に興味がありました<a ng-click="doSomething()"></a>
。JavaScript が HTML に含まれるのが本当に好きではありません。HTMLファイルからではなく、javascriptファイルからjavascriptを制御できるようにしたいです。AngularJS で動作が関連付けられているはずのクラスまたは ID を指定する方法に沿って、このタイプのものを処理するより良い方法はありますか?
1 に答える
動作をまとめたい場合は、ディレクティブを使用して独自の動作をカプセル化し、要素のイベントのバインディングをセットアップして関数を呼び出すことができます (AngularJS ブロガーの Ben Nadel が行っていることを読んだことがあると思います... http://www.bennadel. com/blog/2446-Using-Controllers-In-Directives-In-AngularJS.htm )。
コメントに記載されているように、個人的には問題ではないと思いますが、より大きなチームに所属していた場合、バインディングを JavaScript 開発者に任せ、HTML 開発者にそれらについて心配させたくないという願望が潜在的に見られる可能性があります。詳細と使用ディレクティブのみですが、両方の部分をどのように書いているかを見て、問題はありません。
ディレクティブは、HTML の新しいトリックを教える方法です。DOM のコンパイル中に、ディレクティブが HTML と照合され、実行されます。これにより、ディレクティブは動作を登録したり、DOM を変換したりできます。
http://docs.angularjs.org/guide/directive
HTML
<body ng-app="myApp">
<div clickable>Click me</div>
<button clickable>Click me</button>
</body>
Javascript
angular.module("myApp",[]).directive("clickable", function() {
return {
restrict: 'A',
link: function(scope, iElem, iAttrs) {
iElem.bind("click", function() {
alert("holy guacamole");
});
}
}
});