将knockoutjs绑定到javascript对象属性

将knockoutjs绑定到javascript对象属性,javascript,knockout.js,devextreme,Javascript,Knockout.js,Devextreme,我是新手,所以请容忍我 我想将一个DxForm(DevExpress)绑定到一个javascript对象属性,但是我得到一个错误。。。“无法读取未定义的属性'items' 我不确定这是一个淘汰问题、DevExpress问题还是我这一部分的编码技能不足 这是我的密码 HTML: JSFiddle: 我想绑定到对象,因为我将使用几个DxForm对象,并且我喜欢将每个DxForm的代码保存在一个对象中(更易于阅读) 知道为什么失败了吗 谢谢。您的frm中的闭包有问题 frm对象中的that属性不存在。

我是新手,所以请容忍我

我想将一个DxForm(DevExpress)绑定到一个javascript对象属性,但是我得到一个错误。。。“无法读取未定义的属性'items'

我不确定这是一个淘汰问题、DevExpress问题还是我这一部分的编码技能不足

这是我的密码

HTML:

JSFiddle:

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

知道为什么失败了吗


谢谢。

您的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);
          },
       };