【发布时间】:2017-06-14 15:09:41
【问题描述】:
我有一种情况,我在 Angular js 中使用 ocLazyLoad 加载服务和控制器,它按预期工作。但是,我也想通过使用 ocLazyLoad 解决的服务将一些数据传递给控制器,不幸的是我无法以任何方式完成此操作。我尝试了以下两种方法。
我的服务
(function () {
'use strict;'
angular.module('app')
.service('vendorService', function (http, config) {
return {
create: function(model){
return http.post(config.apiUrl + "api/vendor/", model);
},
update: function(id , model){
return http.put(config.apiUrl + "api/vendor/" + id, model);
},
delete: function(id){
return http.delete(config.apiUrl + "api/vendor/" + id);
},
get: function(id){
return http.get(config.apiUrl+ "api/vendor/" + id);
},
getAll: function(){
return http.get(config.apiUrl + "api/vendor");
}
}
});
})();
我的控制器
(function () {
'use strict;'
angular.module('app')
.controller('vendorsController', function (vendorService, NgTableParams, vendors) {
var vm = this;
vm.vendorsTable = new NgTableParams({
count: 10
}, {
counts: [10, 25, 50],
dataset: angular.copy(vendors)
});
});
})();
我的配置是从 index.html 页面加载的。
方法 1
(function () {
'use strict;'
angular.module('app')
.config(function ($stateProvider) {
$stateProvider
.state('app.vendors', {
url: '/vendors',
templateUrl: 'app/main/vendors/index.html',
controller: 'vendorsController',
controllerAs: 'vm',
resolve: {
deps: function ($ocLazyLoad, $injector) {
return $ocLazyLoad.load([
'app/services/vendor.service.js',
'app/main/vendors/vendors.controller.js'
])
},
vendors: function ($injector) {
var vendorService = $injector.get('vendorService');
return vendorService.getAll();
}
}
})
});
})();
方法 2
(function () {
'use strict;'
angular.module('app')
.config(function ($stateProvider) {
$stateProvider
.state('app.vendors', {
url: '/vendors',
templateUrl: 'app/main/vendors/index.html',
controller: 'vendorsController',
controllerAs: 'vm',
resolve: {
deps: function ($ocLazyLoad, $injector) {
return $ocLazyLoad.load([
'app/services/vendor.service.js',
'app/main/vendors/vendors.controller.js'
])
},
vendors: function (vendorService) {
return vendorService.getAll();
}
}
})
});
})();
控制台也没有错误,服务中所需的所有依赖项,例如http服务和配置都是从html页面本身预加载的。 任何帮助将不胜感激。
【问题讨论】:
-
只是为了让您在我的代码中知道 http 是建立在 $http 之上的并且是不同的 :)
-
一个更新,我添加了 try catch,现在得到 Unknown Provider 错误,我不知道为什么,因为正在加载服务,如果我删除供应商解析功能它工作正常:(
标签: angularjs angular-ui-router angular-promise resolve oclazyload