我一直把头发拉出来。我正在使用离子自动完成功能,并希望通过工厂提取数据。
我的工厂......
myApp.factory('items', function($http){
return {
list: function(query,callback){
$http.get('http://192.168.100.100/myApp/products/' + query).success(callback)
}
};
});
获取我使用的数据..
items.list(function(items) {
$scope.items = items;
});
自动填充请求数据的演示,例如..
$scope.getTestItems = function (query) {
return {
items: [
{id: "1", name: query + "1", view: "view: " + query + "1"},
{id: "2", name: query + "2", view: "view: " + query + "2"},
{id: "3", name: query + "3", view: "view: " + query + "3"}]
};
};
所以我认为这是一个可行的解决方案..
$scope.getTestItems = items.list(query,function(items)
{
console.log(items);
return items;
}
)
但显然不是。我试过..
$scope.getTestItems = function(query)
{
items.list(query,function(items)
{
console.log(items);
return items;
}
)
}
这确实为我提供了结果的控制台,但这不会返回getTestItems
答案 0 :(得分:0)
根据the docs(假设我在这里有正确的lib),你可以回复一个承诺
myApp.factory('items', function($http){
return {
list: function(query) {
return $http.get(... + query).then(function(res) {
return res.data; // unwrap the response data
// see the "Returns" section at https://docs.angularjs.org/api/ng/service/$http#usage
});
}
};
});
和控制器
$scope.getTestItems = function(query) {
return items.list(query);
};
答案 1 :(得分:0)
这个怎么样
厂
list: function(query,callback){
return $http.get('http://192.168.100.100/myApp/products/' + query)
}
通过这种方式,您将从工厂返回承诺。
控制器
$scope.getTestItems = function(query){
items.list(query).then(function(items){
console.log(items);
});
}
一旦promise结算,回调就会执行。
答案 2 :(得分:0)
你可以试试这个,
myApp.factory('items', function($http){
return {
list: function(query){
return $http.get('http://192.168.100.100/myApp/products/'+query);
}
};
});
然后在您的控制器中
var promise = items.list(query);
promise.then(function(response){
//here we go
$scope.items = angular.fromJson(JSON.parse(response.data));
});