2015-03-25 5 views
0

У меня возникла проблема с привязкой объекта (JSON-) к моему представлению.Binding object in Knockout

У меня есть следующий объект, который я получаю от службы REST. enter image description here

Теперь я хотел бы привязать этот объект к моему представлению. Я попытался это:

var viewModel = { 
    test: ko.mapping.fromJS(params.obj), 

    ID: params.obj.ID, 
    //Bezeichnung: ko.observable(params.obj.Bezeichnung), 
    //MaxRunawayTime: ko.observable(params.obj.MaxRunawayTime), 

    btnSaveClick: function (e) { 
     debugger; 
     //params.obj.Bezeichnung = viewModel.Bezeichnung(); 
     //params.obj.MaxRunawayTime = viewModel.MaxRunawayTime(); 

     Application1.db.update(params.obj).done(function (data) { 
      Application1.app.back(); 
     }); 
    } 
}; 

Мой dxView:

<div data-options="dxView : { name: 'TrackerEdit', title: 'TrackerEdit' } " > 
<div data-options="dxContent : { targetPlaceholder: 'content' } " > 
    ID_Tracker:<div data-bind="dxTextBox: {value: ID, disabled: true}"></div> 
    Bezeichnung:<div data-bind="dxTextBox: {value: test.Bezeichnung}"></div> 
    Max. Ausreisezeit:<div data-bind="dxNumberBox:{min:0, max:100, value:test.MaxRunawayTime, showSpinButtons: true}"></div> 
    <!--Bezeichnung:<div data-bind="dxTextBox: {value: Bezeichnung}"></div> 
    Max. Ausreisezeit:<div data-bind="dxNumberBox:{min:0, max:100, value:MaxRunawayTime, showSpinButtons: true}"></div>--> 
    <div data-bind="dxButton: {text: 'Save', onClick: btnSaveClick}"></div>  
</div> 

Пожалуйста, посмотрите на комментируемых строк кода. Таким образом, это сработает. Но я не люблю привязывать каждую переменную отдельно и записывать ее обратно в исходный объект. Я хотел бы связать свой оригинальный объект напрямую.

Я новичок в Knockout, и любая помощь будет замечательной! Большое спасибо.

ответ

0

Вместо написания свойств один на один вы можете использовать ko.mapping плагин:

Просто написать что-то вроде этого:

btnSaveClick: function (e) { 
    debugger; 
    var request = ko.mapping.toJS(viewModel.test); 

    Application1.db.update(params.obj).done(function (data) { 
     Application1.app.back(); 
    }); 
}