jak*_*car 12 coffeescript angularjs angular-routing
我想使用适当的依赖注入MyCtrl1来注入MyCtrl1.resolve对象的字段.我尝试了许多不同的尝试注射@MyCtrl1.resolve等组合,没有运气.
@MyCtrl1 = ($scope, $http, batman, title) ->
$scope.batman = batman.data
$scope.title = title.data
@MyCtrl1.resolve = {
batman: ($http) ->
$http.get('batman.json')
title: ($http) ->
$http.get('title.json')
}
#@MyCtrl1.$inject = ['$scope', '$http'] -- commented out because not sure how to inject resolve fields
angular
.module( 'app', [])
.config( ['$routeProvider', '$locationProvider', ($routeProvider, $locationProvider)->
$locationProvider.html5Mode(true)
$routeProvider.when('/', {templateUrl: 'index.html', controller: MyCtrl1, resolve: MyCtrl1.resolve})
$routeProvider.otherwise({redirectTo: '/'})
])
angular.bootstrap(document,['app'])
Run Code Online (Sandbox Code Playgroud)
pko*_*rce 22
Resolve是路径的属性,而不是控制器.控制器将注入在路由级别定义的依赖项,不需要在控制器上指定解析属性.
以您的一个示例(转换为JavaScript)为例,您将一如既往地定义控制器,即:
MyCtrl1 = function($scope, $http, batman, title) {
$scope.batman = batman.data;
$scope.title = title.data;
}
Run Code Online (Sandbox Code Playgroud)
然后是路由上的resolve属性:
angular.module('app', []).config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true)
$routeProvider.when('/',{templateUrl: 'index.html', controller: MyCtrl1, resolve: {
batman: ['$http', function($http) {
return $http.get(..).then(function(response){
return response.data;
});
}],
title: ['$http', function($http) {
return //as above
}]
}});
$routeProvider.otherwise({redirectTo: '/'});
}]);
Run Code Online (Sandbox Code Playgroud)
如果你想使用路由的解析部分来缩小代码,你需要使用数组样式的注释 - 我在上面的例子中包含了这个.
| 归档时间: |
|
| 查看次数: |
23025 次 |
| 最近记录: |