我之前已经知道了,但无法找到适合我的解决方案。 我让每个控制器启动3次!
这对我来说有问题,因为我的应用程序中有声音并且它有3次显示。
我是棱角分明的新人。我不知道它是否有意义,但我在一个文件controllers.js
中定义了所有控制器。我检查文件app.js
只调用一次。
这是我的app.js:
'use strict';
/* App Module */
var phonecatApp = angular.module('phonecatApp', [
'ngRoute',
'phonecatAnimations',
'ui.router',
'phonecatControllers',
'phonecatFilters',
'phonecatServices',
'ui.utils',
'angularCircularNavigation',
'timer'
]);
phonecatApp.config(['$stateProvider',
function ($stateProvider, $urlRouterProvider) {
var home = {
name: 'home',
url: '',
views: {
'': {
templateUrl: 'partials/home.html',
controller: 'HomeCtrl'
}
}
};
var learn = {
name: 'learn',
url: '/learn',
views: {
'': {
templateUrl: 'partials/learn.html',
controller: 'learnCtrl'
}
}
};
var articles = {
name: 'articles',
url: '/articles',
views: {
'': {
templateUrl: 'partials/articles.html',
controller: 'articlesCtrl'
}
}
};
$stateProvider.state(articles);
$stateProvider.state(learn);
$stateProvider.state(home);
} ]);
谢谢!
答案 0 :(得分:1)
根据我的经验,导致控制器双重调用的最常见问题是:
您从$stateProvider
状态进行控制器调用,同时从HTML调用控制器。
例如考虑:
$stateProvider
.state('sidemenu.groups', {
url: "/groups",
views: {
'mainContent': {
templateUrl: 'partials/groups/groups.html',
controller: 'GroupsCtrl' // <-- 1st call
}
}
})
并在HTML中:
<div ng-controller="GroupsCtrl"></div> <!-- 2nd call -->
删除ng-controller
希望它能帮到你
答案 1 :(得分:0)
决定使用$ routeProvider代替问题解决..