0
我的角度是新的,也许我不明白有关承诺的一切,所以...... 我有一个资源工厂角未定义的承诺
.factory('Product',["$resource", function ($resource){
var Resource = $resource(
"/api/product/:product_id/",
{product_id: '@id'},
{
query: {
isArray: true,
transformResponse: function (data) {
var items = angular.fromJson(data);
return items.results;
}
},
update: {
method: "PUT",
}
},
{
stripTrailingSlashes: false
}
);
而且我在其他工厂。
.factory('Get',["$http", "Product", function ($http, Product){
return {
getDesc: function(id){
var allProducts = Product.query();
var products = [];
for (var i = 0; i < allProducts.length; i++){
if(allProducts[i].desc == id){
products.push(allProducts[i]);
}
}
return products;
}
}
}])
在我的控制器
$scope.someClick = function(product){
var products = Get.getDesc(product.id);
products.$promise.then(function(data){
$log.log(data);
});
};
而且我得到了:错误:R $承诺是不确定的 我不知道为什么。你可以帮帮我吗?
谢谢你的回答。这个过滤将会更复杂。例如第一个模型具有另一个模型的foreignKey,并且我将通过此FK等进行过滤。如果我需要使用这些较早过滤的数据(产品)过滤此工厂中的其他数据,该怎么办? – Jeroj82
基本上,承诺处理程序被链接和用作过滤器/变压器。第一个处理程序的返回值被传递给下一个处理程序,依此类推。这就是为什么在每个处理程序返回一个值很重要。 说了这样的话,你可以在处理程序中实现你的登录(在返回承诺之前)。 想想订购服务。您获得基本订单并且必须添加各种税收和成本: getPrice:function(){return Price.get()。then(addCommision).then(addTax).then(addInsurance); }。 下一个处理程序(.then(myHandler))将看到组合价格 – Meir