我是javascript中的AngularJS和MV *模式的新手。我最近在一个项目上一直在玩AngularJS,我很好奇我是如何避免出现像<a ng-click="doSomething()"></a>
这样的情况?我真的不喜欢我的HTML在我的HTML中。我希望能够从javascript文件而不是HTML文件中控制javascript。有没有更好的方法来处理这种类型的东西,我可以指定一个类或一个应该在AngularJS中具有与之关联的行为的id?
答案 0 :(得分: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");
});
}
}
});