我尝试将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'}
}
]
当我第一次加载应用程序时,一切正常,但是当我更改路径或转到不同的页面时,我的控制器被调用两次。 任何帮助都非常感谢。
答案 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'