2

我是 JavaScript 中 AngularJS 和 MV* 模式的新手。我最近在一个项目中使用 AngularJS,我很好奇如何避免我正在做类似的事情<a ng-click="doSomething()"></a>?我真的不喜欢我的 javascript 在我的 HTML 中。我希望能够从 javascript 文件而不是 HTML 文件中控制 javascript。有没有更好的方法来处理这种类型的东西,就像我可以指定一个应该在 AngularJS 中具有与之关联的行为的类或 id 一样?

4

1 回答 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

http://jsfiddle.net/pCA2g/1/

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 回答