如何在内联javascript调用中避免使用AngularJS?

时间:2013-08-19 23:40:05

标签: angularjs

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

1 个答案:

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

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");
            });
        }
    }
});