Knockout.js 可以从ko.mapping.toJS生成对象以构建添加/编辑屏幕

Knockout.js 可以从ko.mapping.toJS生成对象以构建添加/编辑屏幕,knockout.js,knockout-mapping-plugin,Knockout.js,Knockout Mapping Plugin,我有一个相当大的模型,我需要与我的观点相结合。在UI上,我需要提供添加/编辑功能(使用jquery模型弹出窗口)。。我使用映射插件从服务器映射json数据。这就是事情变得棘手的地方。。因此,我试图实现的是,是否有可能以某种方式创建一个对象- var obj=ko.mapping.toJS(viewmodel) 我使用的是这样的定制装订- <div id="dailog" title="Employee .." class="dialog" data-bind="Dialog: { auto

我有一个相当大的模型,我需要与我的观点相结合。在UI上,我需要提供添加/编辑功能(使用jquery模型弹出窗口)。。我使用映射插件从服务器映射json数据。这就是事情变得棘手的地方。。因此,我试图实现的是,是否有可能以某种方式创建一个对象-

var obj=ko.mapping.toJS(viewmodel)

我使用的是这样的定制装订-

<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
  }
}());

变量映射={
“雇主”:{
创建:函数(选项){
返回新的映射(options.data);
}
};
var EmpMapping=函数(数据){
fromJS(数据,{},this);
};
var DataService=(函数(){
var映射,
视图模型,
selectedItem=ko.可观察(“”);
函数editItem(上下文){//这正在工作。
选择编辑项(上下文);
}
函数AddNewItem(obj){//这不起作用..原因是我无法创建员工的新实例。我正在尝试使用ko.mapping.toJS
调试器
var myObj=ko.toJS(viewModel.EmpList);
var z=ko.mapping.fromJS({},mapping,myObj);
选择编辑项(z);
}
返回{
editItem:editItem,
saveItem:saveItem,
init:init
selectedItem:selectedItem
}
}());

上面的代码不完整,我无法说出视图模型是什么。能否提供JSFIDLE或视图模型的完整代码列表。我不需要查看您的自定义绑定,但我无法说出viewModel.EmpList是什么或selectedItem是如何生成的。您可以编写一个与创建服务器端对象(作为可观察对象),并向该对象添加构造函数。您的
EmpMapping
是朝着正确方向迈出的一步。