Javascript 解决不启动服务功能的问题
我是个新手,查阅了相关问题,但找不到任何有用的东西。我希望有人能提供一些见解,因为我花了一整天的时间在这上面,但都没有用: 我正在尝试使用$resource和ui路由器为我的应用程序使用resolve获取数据。问题是,尽管状态似乎加载良好,但从未调用服务方法(调用定义为int-eh resolve属性)。(该州实际上有一个ui网格,因此当前网格显示为空)。应用程序现在使用json服务器提供数据,服务器不显示任何http请求。请在下面找到一些相关代码: 状态提供程序配置:Javascript 解决不启动服务功能的问题,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我是个新手,查阅了相关问题,但找不到任何有用的东西。我希望有人能提供一些见解,因为我花了一整天的时间在这上面,但都没有用: 我正在尝试使用$resource和ui路由器为我的应用程序使用resolve获取数据。问题是,尽管状态似乎加载良好,但从未调用服务方法(调用定义为int-eh resolve属性)。(该州实际上有一个ui网格,因此当前网格显示为空)。应用程序现在使用json服务器提供数据,服务器不显示任何http请求。请在下面找到一些相关代码: 状态提供程序配置: angular.mod
angular.module('carsApp',['ui.router','ngResource','ui.bootstrap','ui.grid']))
.config(函数($stateProvider,$urlRouterProvider){
$stateProvider
//“汽车”状态的抽象状态。使用两个子选项卡创建视图模板。
.state('app.main.car'{
url:“”,
摘要:没错,
观点:{
//子模板(绝对命名)
'contentbar@app.main': {
templateUrl:'views/crid.html',
控制器:“GridController”
},
'subTabs@app.main': {
templateUrl:'views/cars.html',
控制器:'CarController'
}
},
决心:{
//创建名为“cars”的对象属性
//稍后将用于依赖项注入
//在我们的控制器内。注入解析数据所需的任何服务
汽车:['gridFactory',功能(gridFactory){
//返回服务呼叫,即返回承诺
return gridFactory.getCars();
}],
经销商:功能(){
返回{};
}
}
})
.state('app.main.car.all'{
url:“汽车/摘要”,
观点:{
'subTabView@app.main.car': {
templateUrl:'views/summary.html'
}
},
决心:{
汽车:['gridFactory',功能(gridFactory){
//返回服务呼叫,即返回承诺
return gridFactory.getCars();
}],
经销商:功能(){
返回{};
}
}
});
$urlRouterProvider。否则('/');
});代码>我想你们工厂的问题是获取汽车的方法:
请尝试以下操作:
.service('gridFactory', ['$resource', 'baseURL', function($resource, baseURL) {
this.getCars = function() {
var cars = $resource(baseURL + "cars", null, {
'query': {
method: 'GET',
isArray: true,
// im setting authroization header here so using this version
// of query to be able to add headers
}
return new Promise(function(resolve, reject){
var result = [];
cars.query(function (response) {
angular.forEach(response, function (item) {
result.push(item);
}
}
resolve(result);
})
})
});
}
}
我想这与你们的有关我想你们工厂的问题是如何获得汽车的方法:
请尝试以下操作:
.service('gridFactory', ['$resource', 'baseURL', function($resource, baseURL) {
this.getCars = function() {
var cars = $resource(baseURL + "cars", null, {
'query': {
method: 'GET',
isArray: true,
// im setting authroization header here so using this version
// of query to be able to add headers
}
return new Promise(function(resolve, reject){
var result = [];
cars.query(function (response) {
angular.forEach(response, function (item) {
result.push(item);
}
}
resolve(result);
})
})
});
}
}
我认为这与您的相关需要调用query()
方法并返回$resource
承诺。默认情况下,$resource方法返回在请求完成后填充的空对象或数组
resolve: {
cars: ['gridFactory', function(gridFactory) {
// Return Service call, that returns a Promise
return gridFactory.getCars().query().$promise;
}],
dealer: ....
您还可以将此调用的一部分移动到服务方法中,并让它返回query()。$promise
需要调用query()
方法并返回$resource
承诺。默认情况下,$resource方法返回在请求完成后填充的空对象或数组
resolve: {
cars: ['gridFactory', function(gridFactory) {
// Return Service call, that returns a Promise
return gridFactory.getCars().query().$promise;
}],
dealer: ....
您还可以将此调用的一部分移动到服务方法中,并让它返回query()。$promise
您的应用程序()中是否有名为app.main
和app
的状态?非常感谢您的回复!是的,我喜欢。这只是代码的一部分,希望保持简单。另外,刚刚发现“resolve”对嵌套状态的工作方式有所不同,所以现在就开始研究它。您的应用程序()中是否有名为app.main
和app
的状态?非常感谢您的回复!是的,我喜欢。这只是代码的一部分,希望保持简单。另外,刚刚发现“resolve”对嵌套状态的工作方式有所不同,因此现在就开始研究它。这是一种反模式,在$resource
已经具有promise属性的情况下使用新的promise链接!调查一下@fah,这个链接的答案充满了误导information@charlietfl仔细看我的答案,我在promise中包含了$resource返回的数据的一些逻辑,例如,var result
。对于服务来说,没有模式冲突。坏模式正在解决路由系统中的某些问题。嗯?在路由器中解析是非常常见和实用的。为什么不使用内置的$resource
?无需迭代响应数组,只需将其传递给另一个数组,这是一种反模式,在$resource
已具有promise属性时使用新promise链接!调查一下@fah,这个链接的答案充满了误导information@charlietfl仔细看我的答案,我在promise中包含了$resource返回的数据的一些逻辑,例如,var result
。对于服务来说,没有模式冲突。坏模式正在解决路由系统中的某些问题。嗯?在路由器中解析是非常常见和实用的。为什么不使用内置的$resource
?无需迭代响应数组,只需将其传递给另一个数组即可。这非常感谢您的响应!正确的!我会试试这个,然后回来。我还必须注入$PROMITE,如下所示。这是标准方法还是我不应该这样做?cars\u父项:['gridFactory','$promise',函数(gridFactory,$promise){//返回服务调用,返回承诺返回gridFactory.getCars().query().$promise;}],否…这是一个基本的工作版本。不是抽象的状态,只是一个基本的状态。好的……请注意,父状态中的解析在子状态中已经可用。你不需要再解决同样的问题了,汉克斯!正确的!我一直收到这个错误(这就是为什么我试图“注入”这个“承诺”,但即使这样它也没有消失)错误:[$injector:unpr]未知提供程序: