У меня есть создать шаблон. html
<div data-bind="foreach: productOverGift, visible: expanded" class="free-gift-oder75">
<div class="product-over-info">
<input type="radio" class="product-information" name="productId" data-bind="attr: { value: id, id:'product_over_'+id}, click: $parent.selectItem(id, sku)"/>
<image data-bind="attr: { src: image}" class="product-image" width="120" height="150" alt="Product Image" style="width: 50px; height: 50px"/>
<span data-bind="text: name"></span>
</div>
</div>
и создать файл js
define(
[
'jquery',
'ko',
'uiComponent',
'underscore',
'Magento_Checkout/js/model/step-navigator',
'Magento_Customer/js/model/customer',
'Magento_Checkout/js/model/quote',
'mage/url',
'mage/storage',
'Magento_Checkout/js/action/get-totals',
'mage/translate',
'Magento_Ui/js/model/messageList',
'Magento_Checkout/js/model/full-screen-loader'
],
function (
$,
ko,
Component,
_,
stepNavigator,
customer,
quote,
urlBuilder,
storage,
getTotal,
$t,
messageList,
startLoader
) {
'use strict';
/**
* check-login - is the name of the component's .html template
*/
return Component.extend({
defaults: {
template: 'Custom_Checkout/promotion'
},
//add here your logic to display step,
isVisible: ko.observable(true),
isLogedIn: customer.isLoggedIn(),
//step code will be used as step content id in the component template
stepCode: 'promotion-step',
//step title value
stepTitle: 'Logging Status',
productOverGift: ko.observableArray([]),
freeGiftWithPurchase: ko.observableArray([]),
productImageSelected: ko.observable(""),
productNameSelected: ko.observable(""),
idProductSelected: ko.observable(""),
quoteId: ko.observable(""),
isChecked: ko.observable(true),
skuProductSelected: ko.observable(""),
messageError: ko.observable(""),
message: ko.observable(""),
expanded: ko.observable(true),
arrowClass: ko.observable('fa fa-angle-double-up'),
arrowTitle: ko.observable($t('Shrink')),
dataShippingPnr: ko.observable(""),
dataShippingFullName: ko.observable(""),
dataShippingEmail: ko.observable(""),
dataSegmentDisplay: ko.observable(""),
isCheckedOver: ko.observable(true),
isDeleted: false,
/**
*
* @returns {*}
*/
initialize: function () {
this._super();
//register your step
stepNavigator.registerStep(
this.stepCode,
//step alias
null,
this.stepTitle,
//observable property with logic when display step or hide step
this.isVisible,
_.bind(this.navigate, this),
/**
* sort order value
* 'sort order value' < 10: step displays before shipping step;
* 10 < 'sort order value' < 20 : step displays between shipping and payment step
* 'sort order value' > 20 : step displays after payment step
*/
15
);
return this;
},
/**
* select radio
* @param id
* @param quoteId
* @param sku
*/
selectItem: function (id, sku) {
var self = this;
var listProduct = this.productOverGift();
var itemChecked = $('#product_over_' + id).is(":checked");
if (itemChecked) {
if (listProduct.length > 0) {
listProduct.forEach(function (item, i) {
if (item.id === id) {
self.productImageSelected(item.image);
self.productNameSelected(item.name);
self.idProductSelected(item.id);
self.skuProductSelected(item.sku);
}
});
}
// self.deleteItemInCart(oldProductSku, this.quoteId());
// self.saveProductToOrder(id, this.quoteId(), sku);
}
},
});
}
);
У меня есть функция "selectItem ( ) "используется в теге l oop для тега input => после нажатия (отмечен) вызовет функцию" selectItem ". Но сейчас функция selectItem всегда вызывается при загрузке страницы, и это не то, что я намеревался. Я просто хочу, чтобы он вызывался после нажатия на ввод. Пожалуйста, помогите мне. Спасибо