[英]How to call nest factory in Angularjs?
嗨,我正在用angularjs開發Web應用程序。 我在下面有要求。 我有一家工廠。 我在下面添加了代碼段。
myapp.factory('sadadpaymentapi', ['$http', '$cookieStore', 'cfg', 'ScrollFunction', 'leaselisting', function ($http, $cookieStore, cfg, ScrollFunction, leaselisting) {
var sadadpaymentapiobject = {};
var baseurl = cfg.Baseurl;
var LoginID = $cookieStore.get("LoginID");
var cookiePreferredLanguage = $cookieStore.get('PreferredLanguage');
var urlapi = baseurl + "api/ServiceRequest/CreateRSSedad/";
sadadpaymentapiobject.callsadad = function (PaymentType) {
leaselisting.leaselisting().then(function (response) {
//Problem in calling
}, function (error) { });
var request = {
url: urlapi,
method: 'POST',
data: {
SRActivityID: LoginID,
PaymentType: PaymentType,
PaymentAmount: "100"
},
headers: ScrollFunction.getheaders()
};
return $http(request);
}
return sadadpaymentapiobject;
}]);
這是我的第二份工廠租賃清單
myapp.factory('leaselisting', ['$http', '$cookieStore', 'cfg', 'ScrollFunction', function ($http, $cookieStore, cfg, ScrollFunction) {
var leaselistingobject = {};
var baseurl = cfg.Baseurl;
var LoginID = $cookieStore.get("LoginID");
var cookiePreferredLanguage = $cookieStore.get('PreferredLanguage');
leaselistingobject.leaselisting=function(){
var requestObj = {
url: "api/ServiceRequest/GetROLSPSRLeaseList/",
data: {
LoginID: LoginID,
RSAccountNumber: $cookieStore.get("AccountNumber")
},
headers: ScrollFunction.getheaders()
};
$http(requestObj).then(function (response) {
}, function (error) {
});
}
return leaselistingobject;
}]);
我在下面的行中發現錯誤
leaselisting.leaselisting().then(function (response) { //Problem in calling
}, function (error) { });
我可以在上面的代碼中做錯什么嗎? 我可以知道可以從另一個工廠打電話給另一個工廠嗎? 我從租賃列表中得到的響應我想在sadadpaymentapi的callsadad函數中傳遞它。 那么有人可以在上面的代碼中幫我嗎? 我收到錯誤消息無法讀取leaselisting.leaselisting().then(function (response) {},function(error){});
中未定義的屬性' leaselisting.leaselisting().then(function (response) {},function(error){});
還有什么辦法可以直接注入工廠,例如付款金額:注入工廠這樣的東西?
我認為, leaselistingobject.getValue
是一個異步函數。 所以首先獲得您的價值:
leaselistingobject.getValue = function(){
var requestObj = {
url: "api/ServiceRequest/getValue/"
};
return $http(requestObj).then(function (response) {
return response.data;
});
}
然后使用它。 為了讓所有異步動作完成,我們使用角度$q
。 在這里您可以找到一個小教程。
myapp.factory('sadadpaymentapi', ['$http', '$cookieStore', 'cfg', 'ScrollFunction', 'leaselisting', '$q',function ($http, $cookieStore, cfg, ScrollFunction, leaselisting, $q) {
var sadadpaymentapiobject = {};
var baseurl = cfg.Baseurl;
var LoginID = $cookieStore.get("LoginID");
var cookiePreferredLanguage = $cookieStore.get('PreferredLanguage');
var urlapi = baseurl + "api/ServiceRequest/CreateRSSedad/";
sadadpaymentapiobject.callsadad = function (PaymentType) {
var leastListingPromise = leaselisting.leaselisting();
var getValuePromise = leaselisting.getValue();
$q.all([leastListingPromise, getValuePromise]).then(function (responses) {
//Here you have both responses in an array
var request = {
url: urlapi,
method: 'POST',
data: {
SRActivityID: LoginID,
PaymentType: PaymentType,
PaymentAmount: responses[1]
},
headers: ScrollFunction.getheaders()
};
return $http(request);
});
}
return sadadpaymentapiobject;
}]);
要使leaselisting()
返回請求的響應,請將函數的結尾更改為
$http(requestObj).then(function (response) {
}, function (error) {
});
至
return $http(requestObj).then(function (response) {
return response.data;
}, function (error) {
});
如果不會對可能的錯誤做任何事情,則可以省略錯誤功能部分:
return $http(requestObj).then(function (response) {
return response.data;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.