मेरे पास नियंत्रक है
homemodule.controller ("productController", फ़ंक्शन ($ scope, $ Http, $ resource, dataServiceSingleProduct, $ routeParams) {$ scope.data = dataServiceSingleProduct; dataServiceSingleProduct.getProduct () .then (function () {// सफलता}, फ़ंक्शन () {// त्रुटि चेतावनी ("उत्पाद लोड नहीं कर सका ");});});
और डेटा सेवा
homemodule.factory ("डेटा सेवा सेवा उत्पाद", फ़ंक्शन ($ http, $ q) {वापसी {उत्पाद: _product, getProduct: _getProduct }; // क्रियान्वयन var _product = []; var _getProduct = function () {var deferred = $ q.defer (); $ http.get ("/ डेटा / GetProduct", {params: {"id": 2} })। तब (कार्य (परिणाम) {// सफलता angular.copy (result.data, _product); deferred.resolve ();}, फ़ंक्शन () {// त्रुटि deferred.reject ();}); वापस आस्थगित ।पक्का वादा; }; });
यह इस हार्डकॉड पैरामीटर आईडी ( params: {"id": 2}
) के साथ काम करता है
मेरा प्रश्न यह है:
मैं dataServiceSingleProduct सेवा में आईडी आईडी पैरामीटर कैसे पढ़ सकता हूं।
यह नियंत्रक पर $ मार्ग पैरामीटर का उपयोग कर उपलब्ध है।
<पी > नियंत्रक में:
var id = $ routeParams.id; DataServiceSingleProduct.getProduct (आईडी)। तब (फ़ंक्शन (डेटा) {// ...});
सेवा में:
var _getProduct = function (id) {var deferred = $ q.defer (); $ Http.get ("/ Data / GetProduct", {params: {id: id}})। (फ़ंक्शन (परिणाम) {angular.copy (result.data, _product); deferred.resolve ();}, फ़ंक्शन () {// त्रुटि स्थगित .reject ();}); वापसी स्थगित। };
या उससे भी बेहतर प्रदान करने से पहले $ http.get
वादा करता है, इसलिए किसी और को बनाने की कोई आवश्यकता नहीं है:
Var _getProduct = function (id) {return $ http.get ("/ Data / GetProduct", {params: {id: id}})। फिर (फ़ंक्शन (परिणाम) {return angular.copy (result.data, _product) ;}, फ़ंक्शन () {$ q.reject ();}); };
ध्यान दें कि आप फिर से
सफलता फ़ंक्शन से संशोधित वचन को वापस कैसे लौटाते हैं। इसके अलावा एक वादा को अस्वीकार करने के लिए आप केवल वर्तमान कोड को अस्वीकार करने के लिए $ q.reject
का उपयोग करें।
Comments
Post a Comment