2014-09-05 33 views
1

我知道這是之前問過的,但找不到適合我的解決方案。 我讓每個控制器啓動3次!角度 - 控制器執行超過1次

這對我來說是有問題的,因爲我在我的應用程序中有聲音,它顯示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

你確定它的控制器問題?添加登錄到控制器看到它打印3次。 – 2014-09-05 07:25:24

+0

是的,每個控制器執行3次 – user3944498 2014-09-05 07:55:13

回答

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


希望它會幫助你

+0

謝謝..但它不是問題。唯一帶有「contoller」字樣的html文件位於index.html - user3944498 2014-09-05 07:54:46

0

決定使用$ routeProvider而不是問題解決..