AngularJS-工厂中promise ID字段的返回值
AngularJS - return value of a promise ID field in a factory
我正在恢复allEnquetes
中的所有数据。我只是找到了请求的这个列表,但由于allEnquetes
返回了promise,所以出现了错误。
.factory('enquetesAPI', function($http,myConfig){
return {
allEnquete: function(){
return $http.get(myConfig.remote + '/lists.asp?acao=list-enquete&codadmin='+myConfig.codadmin);
},
getEnquete: function(enqueteId) {
for (var i = 0; i < this.allEnquete().length; i++) {
if (this.allEnquete()[i].codigo === parseInt(enqueteId)) {
return this.allEnquete()[i];
}
}
return this.allEnquete()
}
};
})
这是我console.log(This.allEnquete)
allEnquetes返回一个promise,因此您无法循环执行。检查以下代码。我还没有测试过。但这应该会让你对理想情况下应该如何做有一些想法。
.factory('enquetesAPI', function($http, $q, myConfig){
return {
allEnquete: function(){
console.log('called');
return $http.get(myConfig.remote + '/lists.asp?acao=list-enquete&codadmin='+myConfig.codadmin);
},
getEnquete: function(enqueteId) {
var deferred = $q.defer();
this.allEnquete().then(function(enquetes){
var returnVal = enquetes;
for (var i = 0; i < enquetes.length; i++) {
if (this.allEnquete()[i].codigo === parseInt(enqueteId)){
returnVal = enquetes[i];
}
}
deferred.resolve(returnVal);
}, function(errorResponse){
deferred.reject(errorResponse);
});
return deferred.promise;
}
};
});
这就是你应该如何使用你的服务。
enquetesAPI.getEnquete(id).then(enquetes){
// do whatever you need to do
}
相关文章:
- 清除以前的$_GET值或不获取仅隐藏字段的值
- 根据字段的值启用按钮
- 获取Meteor中自定义Bootbox字段的值
- JQuery:当其他输入字段的值发生更改时更改值
- JQuery获取隐藏字段的值
- 从父元素AngularJS中获取多个输入字段的值
- 可以't使用jquery获取表单中select字段的值
- 如何在用户输入后立即获取输入字段的值
- 未获取文本输入字段的值
- j查询检查复选框是否被选中,然后向输入字段添加值
- 如何使用 jQuery 获取输入字段的值
- 在ajax Jquery之后无法获取隐藏字段的值
- 如何通过javascript将输入字段的值发送到php文件并获取返回的值
- 使用javascript从php向文本输入字段返回一个值
- 使用jQuery blur函数从输入字段返回值
- 使用jQuery返回隐藏字段的值
- getElementById不返回隐藏字段的值
- 当我试图从输入字段返回日期值时,我得到了未定义
- JSON对象的已知非空值字段返回空字符串
- 我如何在谷歌表单脚本编辑器中设置var主题,以返回表单/工作表中指定字段的值