내 문제:
Magento 2 내에서 작은 녹아웃 JS 앱을 작성하려고 시도 중입니다. 앱을 사용할 때 ko.applyBindings(AppViewModel, document.getElementById("koTest"));
Magento에서 사용하는 녹아웃을 중단 하고이 오류가 발생하는 것처럼 앱을 초기화하는 데 어려움을 겪고 있습니다 .
Uncaught Error: You cannot apply bindings multiple times to the same element.
나는 그것이 다음과 같은 이유로 의심합니다.
나는 이것이 Magento 2가 이미 ko.applyBindings()
within을 사용했기 때문이라고 생각합니다 app/code/Magento/Ui/view/base/web/js/lib/knockout/bootstrap.js
. 그리고 그것은 노드를 지정하지 않기 때문에 ko.applyBindings
다시 사용할 수 없습니다 .
ko.applyBindings(AppViewModel, document.getElementById("koTest"))
내 코드에서 사용 하지 않으면 앱이 초기화되지 않습니다.
이로 인해 어떻게 든 ko.applyBindings()
knockout / bootstrap.js를 사용해야한다고 생각 하지만 어떻게 도울 수 있을지 모르겠습니다. 녹아웃에 대한 경험이 거의 없습니다.
내 코드
<script type="text/javascript">
require([
'ko'
], function(ko) {
// This is a simple *viewmodel* - JavaScript that defines the data and behavior of your UI
function AppViewModel() {
this.firstName = ko.observable("Bert");
this.lastName = ko.observable("Bertington");
this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this);
this.capitalizeLastName = function() {
var currentVal = this.lastName();
this.lastName(currentVal.toUpperCase());
};
}
ko.applyBindings(AppViewModel, document.getElementById("koTest"));
});
</script>
<!-- This is a *view* - HTML markup that defines the appearance of your UI -->
<div id="koTest">
<p>First name: <strong data-bind="text: firstName"></strong></p>
<p>Last name: <strong data-bind="text: lastName"></strong></p>
<p>Full name: <strong data-bind="text: fullName"></strong></p>
<p>First name: <input data-bind="value: firstName" /></p>
<p>Last name: <input data-bind="value: lastName" /></p>
<p>Full name: <input data-bind="value: fullName" /></p>
<button data-bind="click: capitalizeLastName">Capitalise</button>
</div>