私はangularjsを使用してWebアプリを実装しています(私にとっては初めて)。ユーザーに提供したい機能の1つは、ユーザーがメニューの画像をクリックしたときにメインウィンドウにdivを作成することです。
そのために、以下のようなディレクティブを作成しました。
var platform = angular.module('platform', []);
platform.directive('addElement', function() {
return function (scope,element, attrs){
var createElement;
createElement = function(){
$('<div>Test</div>').appendTo('#body-main-window');
};
$(this).on('click',createElement);
}
});
そしてここに次のhtmlコードがあります:
<img class = "imgMenu" src="styles/img/logo_add.png" add-element />
問題は、要素でトリガーされたonClickイベントが、そのすべての祖先に伝播されているように見えることです。実際、クリックすると、divが作成されます。ユーザーがディレクティブがある画像をクリックしたときにのみdivが作成されるため、これは期待される動作ではありません。
さらに、クリックすると、directive属性を持つ画像の数だけディレクティブが実行されます。
これが私の問題を説明するためのフィドルです:http://jsfiddle.net/6Ku7D/10/
1つの解決策は、ng-clickディレクティブを使用することですが、コントローラーでDOMの変更を行うことを意味します(これは、私の目標を達成するための適切な方法ではありません)。したがって、ディレクティブは解決策ですが、私は行き詰まっています。
よろしくお願いします
編集(追加情報)
実は、それは私がやりたいことのほんの一部です。一言で言えば、私がクリックしたい要素は私のアプリのメニューにあります。これらの要素は、単にいくつかのオブジェクトの名前です。それらをクリックして、名前だけでなく、編集可能なこのオブジェクトに関するその他の情報を含むdivを作成したいと思います。さらに、作成するdivは(jquery-uiを使用して)ドラッグ可能である必要があり、最後に、これらのdivを「リンク」してワークフローを作成できる必要があります。実は私がやりたいのはヤフーパイプによく似たものです(マッシュアップ/ワークフローエディションのユーザーフレンドリーなインターフェイスを提供します)が、コンピューターサイエンス(データマイニング)の研究者専用です。オブジェクトは、私が開発したWebサービスを介して最初にインポートされたアルゴリズム、データセット、または視覚化手法になります。したがって、「既存の配列に値を追加する」ほど単純ではありません。あなたはまだ私がng-clickを使うべきだと思いますか?