Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
1 Trả lời
3604 Lượt xem

I would like to inherit  a javascript method to update some information on website page. I have tried all the ways I could but didn't work any. Most suprisingly I can't even access the object (probably itsn't considered object). If not considered object then what's the way to inherit such functions? link to the method

var delivery = require('website_sale_delivery.checkout'); // gives undefined why so? 
I am sure its not dependency issue. 
Dependencies are okay and nothing wrong on console
'use strict';
odoo.define('website_sale_delivery.checkout', function (require) {

require('web.dom_ready');
var ajax = require('web.ajax');

/* Handle interactive carrier choice + cart update */
var $pay_button = $('#o_payment_form_pay');

var _onCarrierUpdateAnswer = function(result) {
var $amount_delivery = $('#order_delivery span.oe_currency_value');
var $amount_untaxed = $('#order_total_untaxed span.oe_currency_value');
var $amount_tax = $('#order_total_taxes span.oe_currency_value');
var $amount_total = $('#order_total span.oe_currency_value');
var $carrier_badge = $('#delivery_carrier input[name="delivery_type"][value=' + result.carrier_id + '] ~ .badge.hidden');
var $compute_badge = $('#delivery_carrier input[name="delivery_type"][value=' + result.carrier_id + '] ~ .o_delivery_compute');
if (result.status === true) {
$amount_delivery.text(result.new_amount_delivery);
console.log("deliverystandard...........",$amount_delivery);
$amount_untaxed.text(result.new_amount_untaxed);
$amount_tax.text(result.new_amount_tax);
$amount_total.text(result.new_amount_total);
$carrier_badge.children('span').text(result.new_amount_delivery);
$carrier_badge.removeClass('hidden');
$compute_badge.addClass('hidden');
$pay_button.prop('disabled', false);
}
else {
console.error(result.error_message);
$compute_badge.text(result.error_message);
}
};
});
Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất
var _onCarrierUpdateAnswer = function(result) {
    var $amount_delivery = $('#order_delivery span.oe_currency_value');
    var $amount_untaxed = $('#order_total_untaxed span.oe_currency_value');
    var $amount_tax = $('#order_total_taxes span.oe_currency_value');
    var $amount_total = $('#order_total span.oe_currency_value');
    var $carrier_badge = $('#delivery_carrier input[name="delivery_type"][value=' + result.carrier_id + '] ~ .badge.hidden');
    var $compute_badge = $('#delivery_carrier input[name="delivery_type"][value=' + result.carrier_id + '] ~ .o_delivery_compute');
    if (result.status === true) {
        $amount_delivery.text(result.new_amount_delivery);
        $amount_untaxed.text(result.new_amount_untaxed);
        $amount_tax.text(result.new_amount_tax);
        $amount_total.text(result.new_amount_total);
        $carrier_badge.children('span').text(result.new_amount_delivery);
        $carrier_badge.removeClass('hidden');
        $compute_badge.addClass('hidden');
        // your custom code
        $pay_button.prop('disabled', true);
    }
    else {
        console.error(result.error_message);
        $compute_badge.text(result.error_message);
    }
};

var _onCarrierClick = function(ev) {
    $pay_button.prop('disabled', true);
    var carrier_id = $(ev.currentTarget).val();
    var values = {'carrier_id': carrier_id};
    ajax.jsonRpc('/shop/update_carrier', 'call', values)
      .then(_onCarrierUpdateAnswer);
};

var $carriers = $("#delivery_carrier input[name='delivery_type']");
$carriers.off('click');
$carriers.click(_onCarrierClick);
Ảnh đại diện
Huỷ bỏ

We can't directly inherit _onCarrierUpdateAnswer method. We have to bind click even using our custom code and disconnect the current code.

Here the $carriers.off('click'); will disconnect the original base code and $carriers.click(_onCarrierClick); will help us to bind the click event handler and run our custom code with the modification.

Hope this will help you.

Bài viết liên quan Trả lời Lượt xem Hoạt động
0
thg 9 18
5505
1
thg 5 18
7071
1
thg 7 25
367
0
thg 1 19
3060
1
thg 1 19
2687