Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 原型未定义_Javascript_Asp.net Mvc 4_Knockout.js - Fatal编程技术网

Javascript 原型未定义

Javascript 原型未定义,javascript,asp.net-mvc-4,knockout.js,Javascript,Asp.net Mvc 4,Knockout.js,我试图控制在将数据发送回服务器之前应该序列化哪些数据。为此: viewModel.prototype.toJSON = function () { var copy = ko.toJS(this); delete copy.QuoteListViewModel; return copy; }; 但原型是未定义的,它失败了 viewModel由mvcKnockout创建,确实存在,因为我可以执行以下操作: viewModel.QuoteSelectedViewModel = ko.o

我试图控制在将数据发送回服务器之前应该序列化哪些数据。为此:

viewModel.prototype.toJSON = function () {
  var copy = ko.toJS(this);
  delete copy.QuoteListViewModel;
  return copy;
};
但原型是未定义的,它失败了

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

viewModel.QuoteSelectedViewModel = ko.observable();

那么,为什么原型没有定义呢

我相信Prototype只适用于函数,而不是直接的JS对象,所以我猜您的视图模型没有声明为函数


要回答评论中的问题,要在发送到服务器之前删除属性,请使用
忽略映射
查看“on映射”中的一节,这将毫不奇怪地忽略您在将视图模型复制到JS对象时告诉它的属性

既然可以,为什么要复制对象并删除属性?下面是一个简单的例子:

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

.

什么是viewmodel?它只是一个JS对象,还是一个函数?Prototype只适用于函数,我相信不是直接的JS对象。在您尝试添加到Prototype之前是否声明了构造函数?@Paul hum,实际上您是对的,viewModel的定义为:var viewModel=ko.mapping.fromJS(viewModelJs);那么,在提交到服务器之前,我如何删除属性呢?我可以看到,在调用ko.fromJS时,我可以忽略属性,但在调用ko.toJS时,似乎不可能以相反的方式进行删除。至少文件中不清楚这一点。你确定我可以在映射回JS对象时忽略属性吗?因为什么时候
.prototype
不适用于所有类型?或者你所指的Knockout有什么特别的地方吗?@user1098555你需要使用映射插件,正如我所提到的,而不是ko.toJS方法。@Ian我只讲他报告的错误消息。我假设它适用于JS中的所有内容,但从这个角度看,它并不适用。不确定我是否应该为此投反对票。@PaulManzotti我在那篇文章中没有看到任何暗示
。prototype
有时没有定义。。。