gpt4 book ai didi

javascript - 将 knockoutjs 绑定(bind)到 javascript 对象属性

转载 作者:行者123 更新时间:2023-11-30 15:17:45 30 4
gpt4 key购买 nike

我是 Knockoutjs 的新手,所以请多多包涵。

我想用 knocoutjs 将 DxForm (DevExpress) 绑定(bind)到 javascript 对象属性,但出现错误...“无法读取未定义的属性‘items’”。

我不确定这是 knockout 问题、DevExpress 问题还是我的编码技能不足。

这是我的代码...

HTML:

<div data-bind="dxForm: frm.options"></div>

Javascript:

var viewModel = function() {
var that = this;

// -----------------------------------------------------------------
// Faste...
// -----------------------------------------------------------------
that.frm = {
items: ko.observable(undefined),
data: ko.observable(undefined),
instance: ko.observable({}),
options: {
items: that.frm.items,
formData: that.frm.data,
onInitialized: function(e) {
that.frm.instance(e.component);
},
},
};

return {
frm: that.frm,
};

};

var vm = new viewModel();
ko.applyBindings(vm);

var items = [{
"dataField": "test",
"editorOptions": {
"type": "date",
"pickerType": "calendar",
},
"editorType": "dxDateBox",
"name": "Test",
"visible": true
}];

var data = {
test: 10,
};

vm.frm.data(data);
vm.frm.items(items);

JSFiddle:https://jsfiddle.net/MojoDK/ke395v2c/3/

我想绑定(bind)到对象,因为我将使用多个 DxForm 对象,并且我喜欢将代码保存到一个对象中的每个 DxForm(更易于阅读)。

知道为什么会失败吗?

谢谢。

最佳答案

您只是在您的frm 中遇到了关闭问题。

frm 对象中的that 属性不存在你应该使用this...

但是在您的onInitialized 函数 中,thisthat 不会以您的viewModel 对象为目标...

所以这样,最简单的就是稍后声明选项对象:

 that.frm = {
items: ko.observable(undefined),
data: ko.observable(undefined),
instance: ko.observable({})
};

that.frm.options = {
items: that.frm.items,
formData: that.frm.data,
onInitialized: function(e) {
that.frm.instance(e.component);
},
};

已更新 jsfiddle

关于javascript - 将 knockoutjs 绑定(bind)到 javascript 对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44257444/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com