viewModel の dataModel が不明な場合、applyBindings は可能ですか? 私の問題は、ページでの ajax 呼び出しの後に dataModel 構造が最初に認識されることです。ノックアウト .js を理解するには、ページの読み込み時に viewModel を初期化する必要があります。
nCustomerId is undefined でコードが失敗します。
これをどのように処理すればよいですか?dataModel 構造がわかるまで ko.applyBindings() を呼び出して待つこともできますが (これは ajax 呼び出しの後で行います)、knockout.js を使用するときにそれを行う正しい方法ですか?
function initModel () {
var kunderModel = function () {
var self = this;
self.list = ko.observableArray();
self.selectedItem = ko.observable();
self.newItem = ko.observable();
self.add = function () {
self.selectedItem(newItem(self.newItem));
showInputContainer();
};
self.getList = function () {
var nButikId = jQuery("#butikid").val();
jQuery.ajax({
url: "crm_service.wso/Dan_Butik_Kunder_Tabel/JSON/",
data: { nButikId: nButikId },
success: function (data) {
self.list(data);
},
complete: function () {
connectExt.UIElements().Loading(false);
}
});
}
}
}
_viewModel = new kunderModel();
ko.applyBindings(_viewModel);
jQuery(document).ready(function () {
initModel();
});
<div data-bind="template: { name: 'editTmpl', data: selectedItem }"></div>
<script id="editTmpl" type="text/html">
<div class="opretContainer">
<div class="opretContainerTitle">
<span data-bind="visible: nCustomerId == 0">New</span>
<span data-bind="visible: nCustomerId != 0">Edit</span>
</div>
</div>
</script>