У меня возникли некоторые проблемы при получении текущего или измененного почтового индекса из входного почтового индекса при оформлении заказа, а также при попытке снова запустить метод из моего компонента "getKiosPoints".
В основном рабочий процесс заключается в проверке того, заполнен ли почтовый индекс во входных данных, и использует ли он его для вызова API для получения местоположений.
Это прекрасно работает, когда страница загружена информацией о заполненном почтовом индексе.
Проблема заключается в том, чтобы получить почтовый индекс при изменении на странице, а затем запустить метод getKiospoints с введенным почтовым индексом.
Я использовал "quote.shippingAddress._latestValue.postcode" или "quote.shippingAddress (). Postcode", но проблема в том, что я собираюсь получить в хранилище, я всегда получаю предыдущий пост-код, а не фактический, который был только что вставлен.
Вот мой код:
define([
'jquery',
'ko',
'Magento_Checkout/js/model/quote',
'uiComponent'
], function ($,ko,quote,Component) {
'use strict';
var listLocations = ko.observableArray([]);
$(document).on('change',"[name='postcode']",function(){
console.log("what postcalcode");
console.log(quote.shippingAddress().postcode);
});
return Component.extend({
defaults: {
template: 'Cloud_Vasp/checkout/shipping/pickup-points'
},
getCode: function(){
return 'cloud_vasp_cloud_vasp';
},
initObservable: function () {
this._super();
this.selectedMethod = ko.computed(function() {
var method = quote.shippingMethod();
var selectedMethod = method != null ? method.carrier_code + '_' + method.method_code : null;
return selectedMethod;
}, this);
return this;
},
getKiosPoints: function () {
var postalCode = quote.shippingAddress._latestValue.postcode;
console.log(postalCode);
$.ajax
({
type: "POST",
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', 'Bearer eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDc');
},
url: '...api/va.pt/GetServiceDeliveryPoints',
dataType: 'json',
contentType: 'application/json',
async: true,
//json object to sent to the authentication url
data: JSON.stringify({
"PostalCodeOrLocality": postalCode
}),
success: function (data) {
if(data.statusCode == 200){
var locations = data.response;
listLocations(data.response);
//return locations;
}
},
error: function( jqXhr, textStatus, errorThrown ){
return errorThrown;
}
})
return listLocations;
}
});
});
Я что-то упустил?