Angular js:Controller调用两次

时间:2015-11-06 09:48:24

标签: angularjs ruby-on-rails-4

我尝试将angularjs集成到我现有的rails应用程序中。一切都工作正常,除了我的screenCast角度控制器多次调用。我已经搜索了堆栈溢出最近5个小时,但没有找到解决方案。

screencast.coffee

angular.module('AngularCasts').controller 'ScreencastsCtrl',($scope,Screencast, $location, $routeParams) ->
 alert("hello");
 $scope.screencasts=Screencast.query()

 $scope.selectedScreencast = null

app.coffee是

angular.module('AngularCasts', [
'templates',
'ngRoute',
'ngResource', 
])

.config ($routeProvider, $httpProvider) ->
 $routeProvider
  .when('/screencasts/new',
    templateUrl: "screencasts/form.html"
    controller: "ScreencastsCtrl"
  ).when('/screencasts',
    templateUrl: "screencasts/index.html"
    controller: "ScreencastsCtrl"
  ).when('/screencast/:id/edit',
    templateUrl: "screencasts/update_form.html"
    controller: "EditScreencastsCtrl"
 )

我的scrrencast.coffee工厂

angular.module('AngularCasts').factory 'Screencast', ['$resource', ($resource) ->
  $resource '/api/screencasts/:id', id: '@id',{
    'create': {method: 'post'}
    'update': { method: 'patch', id: '@id'}
    'destroy':{method:'delete'}
  }  
]

当我第一次加载应用程序时,一切正常,但是当我更改路径或转到不同的页面时,我的控制器被调用两次。 任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:0)

1:您对两个可能导致控制器调用两次的模板使用相同的控制器

 .when('/screencasts/new',
        templateUrl: "screencasts/form.html"
        controller: "ScreencastsCtrl" //same controller
      ).when('/screencasts',
        templateUrl: "screencasts/index.html"
        controller: "ScreencastsCtrl" //same controller

2:检查您的模板和路线,您可能已经声明控制器两次

 in template: ng-controller="ScreencastController as ..

   in route: controller:'ScreencastController'