2016-04-02 8 views
1

ich die Daten von ng-Modell von html-> bekommen Controllers-> Dienste-> Fabriken Nach dem Speichern bekam ich Antwort wie dieseWie erhalten Sie die Daten beim Speichern als Versprechen?

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 Code Dies ist meine Antwort

ist:

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"); 
     }); 
    }, 

} 

}) 

Bitte helfen Sie mir, wie Sie die Daten als Versprechen machen ..

+0

speichern Ist Funktion arbeitet verwendet Winkel Methode $ http das? Wenn ja, geben Sie ProductItemNew innerhalb der Sicherungsfunktion zurück und geben Sie die Artikel zurück. $ save. addProductIntemNew sollte eine Zusage zurückgeben. –

+0

nicht funktioniert..wird bitte fügen Sie den Code – SrinivasAppQube

Antwort

0

es für mich mit $ 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"); 
     }); 

    } 
} 

}) 
0

Sie müssen von Versprechen Objekt zurückgeben die Fabrikmethode. Ressourcen haben $promise Eigentum, was Sie brauchen. So könnte es so etwas wie dieses:

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") 
     }); 
    } 

    } 

}) 

nur entscheiden, was Sie dieses Versprechen mit lösen wollen: entweder aus speichern Anfrage ursprünglichen Antwort oder vielleicht ProductItemnew Array.

+0

danke für Ihre Antwort.ich verwendet $ q. es funktioniert für mich. Ich werde versuchen, dies auch – SrinivasAppQube

+0

Sie sollten nicht $ q verwenden und in diesem Fall verzögern, das heißt [Deferred Anti-Muster] (https://github.com/petkaantonov/bluebird/wiki/Promise-anti-patterns). – dfsq

+0

Ok. Danke dir für deinen Vorschlag. Ich werde mit Versprechen gehen – SrinivasAppQube

Verwandte Themen