KnockoutJS belgelerinin çok iyi bir okumaya göre, çok basit bir Nakavt görünümünün başlatılması aşağıdaki gibi görünür
// This is a simple *viewmodel* - JavaScript that defines the data and behavior of your UI
function AppViewModel() {
this.firstName = "Bert";
this.lastName = "Bertington";
}
// Activates knockout.js
ko.applyBindings(new AppViewModel());
ie - nesne oluşturucu olarak kullanılması amaçlanan bir javascript işlevi oluşturursunuz, nesneyi ondan başlatır ve sonra bu nesneyi ko.applyBindings
global knockout nesnesinin ( ko
) yöntemine geçirirsiniz.
Ancak, Magento 2'de, Grid UI ile bir arka uç sayfası js/core/app.js
yüklerseniz Magento, RequireJS modülünü başlatır
/**
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
define([
'./renderer/types',
'./renderer/layout',
'Magento_Ui/js/lib/ko/initialize'
], function (types, layout) {
'use strict';
return function (data) {
types.set(data.types);
layout(data.components);
};
});
Bu modül, Magento'nun KnockoutJS kullanımını başlattığı anlaşılanMagento_Ui/js/lib/ko/initialize
modülü yükler . Ancak, başlatma modülünün kaynağına bakarsanız.
define([
'ko',
'./template/engine',
'knockoutjs/knockout-repeat',
'knockoutjs/knockout-fast-foreach',
'knockoutjs/knockout-es5',
'./bind/scope',
'./bind/staticChecked',
'./bind/datepicker',
'./bind/outer_click',
'./bind/keyboard',
'./bind/optgroup',
'./bind/fadeVisible',
'./bind/mage-init',
'./bind/after-render',
'./bind/i18n',
'./bind/collapsible',
'./bind/autoselect',
'./extender/observable_array',
'./extender/bound-nodes'
], function (ko, templateEngine) {
'use strict';
ko.setTemplateEngine(templateEngine);
ko.applyBindings();
});
Magento'nun ko.applyBindings();
nesneyi görünüm nesnesi olmadan çağırdığını görürsünüz . Bu hiç mantıklı değil ve bu benim Nakavt ya da Magento'nun sınırlı anlayışımın burada özel / garip bir şey yapmasından emin değilim.
Magento'nun Nakavt ciltlerini gerçekten uyguladığı yer burası mı? Yoksa başka bir yerde mi oluyor? Yoksa Magento, Nakavt kodunu kesmek ve başka bir yerde işlemek için zor bir şey mi yapıyor?