模块路线:
var switchModule = angular.module('switchModule', []);
switchModule.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/build-content', {templateUrl: 'build-content.html', controller: BuildInfoController});
}]);
控制器:
function BuildInfoController($http, $scope){
alert("hello");
}
HTML:
<html ng-app="switchModule">
...
<body>
<ul>
<li><a href="#build-content"/></a></li>
</ul>
<div class="ng-view"></div>
</body>
...
每次当我点击超链接'的'BuildInfoController的时间会被调用两次。 我失去了一些东西?
Answer 1:
我有同样的问题,而且似乎没有与路由一个愚蠢的错误。 有某种重定向的事情。
修复它,我只是在href加斜杠,如:
<li><a href="#/build-content/"></a></li>
我希望它会解决的事情,对你来说。
Answer 2:
我今天不得不面对同样的问题。 我曾在我的$ routeProvider并以我的html添加控制器名称。
$routeProvider
.when('/login', {
controller: 'LoginController',
templateUrl: 'html/views/log-in.html'
})
在我的观点
<div class="personalDetails" ng-controller="LoginController"> </div>
您可以从您的视图或从routeprovider将控制器名。
Answer 3:
我也有过类似的问题。 我发现,在路线中添加斜线但不是在链接工作预期。
$routeProvider.
when('/build-content/',...);
有了这个标记
<li><a href="/build-content">Content</a></li>
然后AngularJS将纠正在浏览器中什么是在$ routeProvider定义的URL。
奇怪的是相反的,似乎与链接,而不是在路线拖尾斜杠工作过。 似乎只要结尾的斜杠不匹配的解析和控制器将不会被调用两次!
Answer 4:
矿是具有2 NG-视图指令的情况。 我试图把它包起来,但无意复制它:
<div class="ng-view">
<div ng-view></div>
</div>
去除包装,固定它。
Answer 5:
卸下ng-controller
是否存在从您的模板页面指令。
Answer 6:
我有同样的问题,结果发现,如果你的自举角两个时间你可以有同样的错误。
在我的情况下,我不得不<body ng-app>
而且angular.bootstrap(document,['app'])
和导致控制器的双初始化。
希望这可以一定的时间节省的人。
Answer 7:
我不得不SomeController的声明为每个在一个单一的状态下观看的部分。 导致重复的事件触发。
.state('chat', {
url: '/',
views: {
'content@': {
templateUrl: 'views/chat_wv1.html',
controller: 'ChatController'
},
'form@': {
templateUrl: 'views/chat_wv_placeholder.html',
controller: 'ViewController'
},
'sidePanel@': {
templateUrl: 'views/sidePanel_wv.html'
/* removing this part solved my issue*/
/*controller: 'ChatController'*/
}
}
})
希望这有助于一些其他人。
Answer 8:
我也曾经有过一个customDirective类似的问题和unitentionally复制我的控制器。
<html>
<body ng-app="MyApp" ng-controller="MyDirectiveCtrl">
<my-directive></my-directive>
</body>
</html>
angular.directive('myDirectivie', [function() {
return {
restrict: 'E',
controller: 'MyDirectiveCtrl',
...
}
}]);
我通过在身体层面消除NG控制器标签解决它
Answer 9:
Answer 10:
控制器可以被添加到DOM的一个以上的元素,因此,如果这已经完成例如,可能会发生这样的问题:
<div id="myDiv1" ng-controller="myController" ....></div>
....
<div id="myDiv2" ng-controller="myController" ....></div>
Answer 11:
同样在这里我的是具有2 NG-视图指令的情况。
enter code here
删除了重复,即NG-来看,固定它。
文章来源: AngularJs: controller is called twice by using $routeProvider