2017-05-30 57 views
1

我是Knockoutjs的新手,請耐心等待。將knockoutjs綁定到javascript對象的屬性

我想knocoutjs綁定一個JavaScript對象屬性的DxForm(DevExpress),但我得到一個錯誤...「無法讀取未定義的屬性'項'。

我不確定這是否是一個挖空問題,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/

我要綁定的對象,因爲我要去使用多個DxForm對象,我喜歡將代碼保存到每個DxForm中對象(更易於閱讀)。

任何想法爲什麼失敗?

謝謝。

回答

2

你只是在你的frm關閉時出現問題。

財產FRM對象不存在,您應該使用這個 ...

但在你onInitialized功能不會針對您viewModel object ...

所以這樣,最簡單的就是聲明選項對象後來:

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

+0

哦...好...我知道了。謝謝你幫我出去!我會用你的解決方案。 – MojoDK

相關問題