angularjs控制器在应用时触发两次

时间:2014-09-12 06:40:53

标签: javascript angularjs

我在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>

我用状态来调用我的控制器模板。

app.config(["$stateProvider", function ($stateProvider) {
    $stateProvider.state("myctrl", {
        url: "/myctrl",
        templateUrl: "templates/myctrl/myctrl.html",
        controller: "MyController"
    });
}])

我正在为 $ scope.doSomething 功能设置一个断点。当我启动应用程序时,断点停止了这一点。当我调用我的控制器模板url的url时,断点再次触发。所以我的活动注册了两次,事件发生了两次。

我认为控制器会产生两次或另一种问题。

解决方案

2 个答案:

答案 0 :(得分:1)

我查看了我的HTML并找出了问题所在。我的名为模板网址的href链接包含ng-controller =“MyController”,模板包含控制器。所以两次打电话。

答案 1 :(得分:0)

来自Angular Docs

  

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