我正在使用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感谢您的建议。我将从现在开始遵循“这个少”的哲学。 –