我是 JavaScript 中 AngularJS 和 MV* 模式的新手。我最近在一个项目中使用 AngularJS,我很好奇如何避免我正在做类似的事情<a ng-click="doSomething()"></a>
?我真的不喜欢我的 javascript 在我的 HTML 中。我希望能够从 javascript 文件而不是 HTML 文件中控制 javascript。有没有更好的方法来处理这种类型的东西,就像我可以指定一个应该在 AngularJS 中具有与之关联的行为的类或 id 一样?
问问题
475 次
1 回答
1
如果你想封装一个行为,你可以使用指令封装你自己的行为,并为元素上的事件设置绑定以调用一个函数(我相信我读到 Ben Nadel 是一个 AngularJS 博主... 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");
});
}
}
});
于 2013-08-20T00:00:06.357 回答