簡體   English   中英

如何在Angularjs中調用Nest工廠?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM