如何在保存时将数据作为承诺获取



我从html->controllers->services->Factories获取ng模型的数据保存后,我得到的回复是这样的

这是我的回应

Resource {_id: "56fe5ddc414e823023576508", productcode: "101",  productname:"desktops",
__v: 0, isDeleted: false…}
$promise:undefined
$resolved:true
__v:0
_id:"56fe5ddc414e823023576508"
isDeleted:false
productcode:"101"
productitems:Array[1]
productname:"desktops"
__proto__:Object

myFacory代码:

factmodule.factory("DashboardItemFactory",function($resource){
var ProductItemnew=[];
    ProductItemInfoResourec=$resource("http://192.168.0.194:9070/productitems/:id", 
                    {"id": "@id","productid":"@productid"}, {update: {method: "PUT"}});
return{
    addProductItemnew:function(itemslist){
        var items = new ProductItemInfoResourec(itemslist);
        items.$save({"id":itemslist.productid},function(respdata){
            console.log(respdata)
            ProductItemnew.push(respdata);
            console.log("Data Saved...")
        },function(respdata){
            console.log("Error while saving the data");
        });
    },
}
})

请帮助我如何使数据成为承诺。。

您需要从工厂方法返回promise对象。资源具有$promise属性,这正是您所需要的。所以它可能是这样的:

factmodule.factory("DashboardItemFactory", function($resource) {
  var ProductItemnew = [];
  ProductItemInfoResourec = $resource("http://192.168.0.194:9070/productitems/:id", {
    "id": "@id",
    "productid": "@productid"
  }, {
    update: {
      method: "PUT"
    }
  });
  return {
    addProductItemnew: function(itemslist) {
      var items = new ProductItemInfoResourec(itemslist);
      return items.$save({ id: itemslist.productid }).$promise.then(function(respdata) {
        ProductItemnew.push(respdata);
        console.log("Data Saved...", respdata)
        return respdata; // or return ProductItemnew;
      }, function(respdata) {
        console.log("Error while saving the data");
        throw new Error("Error while saving the data")
      });
    }
  }
})

只需决定您希望使用什么来解决此承诺:保存请求的原始响应,或者ProductItemnew数组。

它对我的$q 有效

factmodule.factory("DashboardItemFactory",function($resource,$q){
var ProductItemnew=[];
ProductItemInfoResourec=$resource("http://192.168.0.194:9070/productitems/:id/:itemid", 
                    {"id": "@id","productid":"@productid"}, {update: {method: "PUT"}});
return{
    addProductItemnew:function(itemslist){
         var dfr = $q.defer();
        var items = new ProductItemInfoResourec(itemslist);
        items.$save({"id":itemslist.productid},function(respdata){
            console.log(respdata)
            ProductItemnew.push(respdata);
             dfr.resolve(ProductItemnew);
            console.log("Data Saved...")
             return dfr.promise;
        },function(respdata){
            console.log("Error while saving the data");
        });
    }
}
})

最新更新