Javascript angularjs控制器在应用程序上触发两次

Javascript angularjs控制器在应用程序上触发两次,javascript,angularjs,Javascript,Angularjs,我在javascript文件中创建了一个控制器模块 myController.js (function () { "use strict"; var app = angular.module("mymodule"); app.controller("MyController", ["$scope", "service", function ($scope, service) { $scope.doSomething = funct

我在javascript文件中创建了一个控制器模块

myController.js

(function () {
    "use strict";
    var app = angular.module("mymodule");

    app.controller("MyController", ["$scope", "service", 
       function ($scope, service) {
            $scope.doSomething = function(){
                var element = service.getElement(1);
                element.events.register("mouseover", element, function(){});
            }
       }
    ]);
)();
我在index.html文件中引用了如下内容

<script src="js/lib/myController.js"></script>
我正在为$scope.doSomething函数设置断点。当我启动应用程序时,断点停止了该点。当我调用控制器模板url的url时,断点再次触发。所以我的事件记录了两次,事件触发了两次

我认为控制器造成了两次或另一次问题


解决方案

我查看了我的HTML并找出了问题所在。名为模板url的My href链接包含ng controller=“MyController”,模板包含controller。因此被称为两次。

来自:

请注意,还可以通过$route服务在路由定义中声明控制器,将其附加到DOM。一个常见的错误是在模板本身中使用ng控制器再次声明控制器。这将导致控制器连接并执行两次


你真正的HTML是什么?哦,好吧,我看了看我的HTML,找出了问题所在。My href链接包含ng控制器,模板包含控制器。所以打了两次电话。你应该把这个作为一个答案,并接受它,这样别人就可以看到你的问题已经解决了,特别是因为你自己解决了它。不要给问题本身添加答案。将您的HTML添加到问题中。如果您有自定义侦听器,请听$destroy。。。我不确定使用angular ui,但使用route,控制器会随着url的更改而实例化。
app.config(["$stateProvider", function ($stateProvider) {
    $stateProvider.state("myctrl", {
        url: "/myctrl",
        templateUrl: "templates/myctrl/myctrl.html",
        controller: "MyController"
    });
}])