当使用 AngularJS 的 $routeprovider 和 requireJS 时,我尝试将 Controller 注入(inject) $routeScope
$routeProvider.when '/',
templateUrl : loadView('aboutJellyfish')
controller: 'aboutJellyfish'
resolve:
first:loadController('aboutJellyfish')
loadController 函数:
loadController = (ctrl_name) ->
resolve = undefined
resolve = ["$q", "$controller", "$rootScope", "$routeParams", ($q, $controller, $rootScope) ->
deferred = undefined
deferred = $q.defer()
require(["../controllers/" + ctrl_name], (ctrl_module) ->
$controllerProvider.register(ctrl_name, ctrl_module)
$rootScope.$apply(->
deferred.resolve not 0
)
)
deferred.promise
]
requirejs 配置:
require.config
paths:
jQuery: 'lib/jQuery/jquery-1.10.2.min'
angular: 'lib/angular/angular.min'
app: 'app'
shim:
'angular':
exports : 'angular'
deps:['jQuery']
'app':
deps:['angular']
exports:'app'
'jQuery':
exports : '$'
priority: ['jQuery','angular','app']
urlArgs: 'v=1.01'
require ['angular','app'], (angular) ->
angular.element(document).ready () ->
angular.bootstrap(document,[applicationName])
和 Controller
'use strict'
define ['app'],(app) ->
app.controller 'aboutJellyfish', ['$scope',($scope)=>
$scope.info='it works!'
]
问题是我收到以下错误“参数'aboutJellyfish'不是一个函数,得到了对象”,但在 Controller 中使用以下代码一切正常:
'use strict'
define ['app'],(app) ->
aboutJellyfish = ["$scope", ($scope) ->
$scope.info="Jellyfish Beta 0.1"
]
最佳答案
您的loadController('aboutJellyfish')
正在返回实际的 Controller 对象
return resolve = [ "$q", "$controller", "$rootScope", "$routeParams", function($q, $controller, $rootScope)...
但是 $routeProvider
上的 resolve {}
需要接收一个函数。
resolve: {
first: <- it needs to be a function here
}
关于javascript - AngularJS Controller 解析: Argument 'controller' is not a function,得到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18979995/