我试图在使用 AngularJS 的 $routeprovider 和 requireJS 时将控制器注入 $routeScope
$routeProvider.when '/',
templateUrl : loadView('aboutJellyfish')
controller: 'aboutJellyfish'
resolve:
first:loadController('aboutJellyfish')
加载控制器功能:
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])
和控制器
'use strict'
define ['app'],(app) ->
app.controller 'aboutJellyfish', ['$scope',($scope)=>
$scope.info='it works!'
]
问题是我收到以下错误'Argument'aboutJellyfish'不是一个函数,得到了对象'但是在控制器中使用以下代码一切正常:
'use strict'
define ['app'],(app) ->
aboutJellyfish = ["$scope", ($scope) ->
$scope.info="Jellyfish Beta 0.1"
]