我正在使用angularjs(第一次爲我)實現一個web應用程序。我想向用戶提供的一個功能是在用戶單擊菜單中的圖像時在主窗口中創建一個div。在angularjs上傳播事件
爲此,我創建了一個指令,如下所示。
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。
此外,點擊時,該指令的執行次數與具有指令屬性的圖像一樣多。
這裏是爲了說明我的問題一個小提琴:http://jsfiddle.net/6Ku7D/10/
一個解決方案是使用NG-點擊指令,但它意味着做一些DOM修改whitin控制器(它不是實現有道我的目標)。指令是這樣的解決方案,但我被卡住..
問候
EDIT(附加信息)
其實,這是我所想要做的只是squeleton。簡而言之,我想單擊的元素位於我的應用程序的菜單中。這些元素只是一些對象的名稱。通過點擊它們,我想創建一個div,該div不會僅包含該對象的名稱,而是可以編輯的其他信息。此外,我將創建的div應該是可拖動的(使用jquery-ui),最後,我應該能夠「鏈接」這些div來創建工作流。實際上,我想要做的事情與yahoo pipes(爲混搭/工作流程版本提供用戶友好的界面)非常相似,但專用於計算機科學(數據挖掘)的研究人員。對象將是通過我開發的Web服務首先導入的算法,數據集或可視化技術。因此,它不像「爲現有數組添加值」那麼簡單。你還認爲我應該用ng-click嗎?
角,通過設計,「這個少」你的'$(this)',不知道你想在那裏做什麼,但是你可能想要'$(element)'。 – jpsimons
@darkporter感謝您的建議。我將從現在開始遵循「這個少」的哲學。 –