将knockoutjs绑定到javascript对象属性
我是新手,所以请容忍我 我想将一个DxForm(DevExpress)绑定到一个javascript对象属性,但是我得到一个错误。。。“无法读取未定义的属性'items' 我不确定这是一个淘汰问题、DevExpress问题还是我这一部分的编码技能不足 这是我的密码 HTML: JSFiddle: 我想绑定到对象,因为我将使用几个DxForm对象,并且我喜欢将每个DxForm的代码保存在一个对象中(更易于阅读) 知道为什么失败了吗将knockoutjs绑定到javascript对象属性,javascript,knockout.js,devextreme,Javascript,Knockout.js,Devextreme,我是新手,所以请容忍我 我想将一个DxForm(DevExpress)绑定到一个javascript对象属性,但是我得到一个错误。。。“无法读取未定义的属性'items' 我不确定这是一个淘汰问题、DevExpress问题还是我这一部分的编码技能不足 这是我的密码 HTML: JSFiddle: 我想绑定到对象,因为我将使用几个DxForm对象,并且我喜欢将每个DxForm的代码保存在一个对象中(更易于阅读) 知道为什么失败了吗 谢谢。您的frm中的闭包有问题 frm对象中的that属性不存在。
谢谢。您的frm中的闭包有问题 frm对象中的that属性不存在。您应该使用this 但是在您的初始化函数中,这个和那个不会针对您的视图模型对象 因此,通过这种方式,最简单的方法是稍后声明options对象:
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);
},
};
更新了哦。。。好啊我懂了。谢谢你在这里帮助我!我将使用你的解决方案。
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);
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);
},
};