0

我正在尝试控制在将哪些数据发送回我的服务器之前应该对其进行序列化。去做这个 :

viewModel.prototype.toJSON = function () {
  var copy = ko.toJS(this);
  delete copy.QuoteListViewModel;
  return copy;
};

但是原型是未定义的并且它失败了。

viewModel 由 mvcKnockout 创建并且确实存在,因为我可以执行以下操作:

viewModel.QuoteSelectedViewModel = ko.observable();

那么为什么原型是未定义的呢?

4

2 回答 2

1

我相信,原型仅适用于函数,而不是直接的 JS 对象,所以我猜你的视图模型没有被声明为函数。

要回答您评论中的问题,要在发送到服务器之前删除属性,请查看映射插件文档中关于使用 a 进行映射的部分ignore map,毫不奇怪,这将忽略您在复制时告诉它的属性 a查看模型到 JS 对象。

于 2013-03-15T13:34:43.833 回答
0

为什么要复制对象和属性,而在映射期间delete可以忽略它?这是一个简单的例子:

function viewmodel() {
    var self = this;

    this.ignore = ko.observable("ignore");
    this.copy = ko.observable("copy");

    this.toJS = function () {
        var mapping = {
            'ignore': ["ignore", "toJS"]
        }

        return ko.mapping.toJS(self, mapping);
    };
};

var vm = new viewmodel();
ko.applyBindings(vm);

console.log(vm.toJS());

JSF中。

于 2013-03-15T13:41:46.590 回答