Не могу получить текущий почтовый индекс - PullRequest
0 голосов
/ 08 марта 2019

У меня возникли некоторые проблемы при получении текущего или измененного почтового индекса из входного почтового индекса при оформлении заказа, а также при попытке снова запустить метод из моего компонента "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;


        }
    });
});

Я что-то упустил?

1 Ответ

0 голосов
/ 11 марта 2019

У меня есть еще одно предложение.Вы можете использовать onepage.html и применить следующий код: -

require(
  [
      'jquery',
      'Magento_Checkout/js/model/quote',
      'Magento_Checkout/js/model/shipping-service',
      'Magento_Checkout/js/model/shipping-rate-registry',
      'Magento_Checkout/js/model/shipping-rate-processor/new-address',
      'Magento_Checkout/js/model/shipping-rate-processor/customer-address',
      'Magento_Customer/js/model/customer'
  ],
  function ($, quote, shippingService, rateRegistry, defaultProcessor, customerAddressProcessor, customer) {

   $(document).on('change',"#shipping-new-address-form [name='postcode']",function(e){

        var elementValue = $(this).val();
        //Apply your code here

    });

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...