ビューにバインドする必要があるかなり巨大なモデルがあります。UI では、(jquery モデル ポップアップを使用して) 追加/編集機能を提供する必要があります。マッピング プラグインを使用して、サーバーから json データをマップしています。そして、それは物事がトリッキーになるところです..だから私が達成しようとしているのは、どうにかしてオブジェクトを作成できるかどうかです-
var obj = ko.mapping.toJS(ビューモデル)
私はこのようなカスタムバインディングを使用しています -
<div id="dailog" title="Employee .." class="dialog" data-bind="Dialog: { autoOpen: false, resizable: false, modal: true, height: 'auto', width: 'auto', position: {my: 'center', at: 'center'} }, template: { name: 'editTmpl', data: DataService.selectedItem, if: DataService.selectedItem }, openDialog: DataService.selectedItem">
</div>
var mapping = {
'EmpList': {
create: function (options) {
return new EmpMapping(options.data);
}
};
var EmpMapping = function (data) {
ko.mapping.fromJS(data, {}, this);
};
var DataService = (function () {
var mapping,
viewModel,
selectedItem = ko.observable("");
function editItem(context) { //this is working.
selectedItem(context);
}
function AddNewItem(obj) { // this is not working .. reason being I am not able to create new instance of a Employee. I was trying with ko.mapping.toJS
debugger
var myObj = ko.toJS(viewModel.EmpList);
var z = ko.mapping.fromJS({}, mapping, myObj);
selectedItem(z);
}
return{
editItem: editItem,
saveItem: saveItem,
init : init
selectedItem : selectedItem
}
}());