2017-05-30 14 views
1

私はKnockoutjsを使い慣れていますので、私にご負担ください。knockoutjsからjavascriptオブジェクトへのバインド

DxForm(DevExpress)をjavascriptオブジェクトのプロパティにバインドしようとしましたが、エラーが発生しました... "未定義のプロパティ 'items'を読み込めません。

これがノックアウトの問題か、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オブジェクト...

このように、最も簡単なのはオプションオブジェクト後で:

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

を更新し、[OK] ...ああ...私が参照してください。ここで私を助けてくれてありがとう!私はあなたのソリューションを使用します。 – MojoDK

関連する問題