首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基因敲除继承加上映射

基因敲除继承加上映射
EN

Stack Overflow用户
提问于 2013-04-26 05:20:48
回答 1查看 314关注 0票数 1

编辑:原来我的问题是一个ID10T错误。我复制了一个具体的类定义,但忘记了更改名称。JavaScript高兴地让我重新定义了实体,而没有任何与Knockout相关的方法。哦!

这个问题建立在对另一个Knockout/inheritance question的回答上。使用这个问题的答案,我能够构建一个基本的层次结构。但是,我希望像处理对象数据一样使用映射插件。但是,当我尝试使用映射时,我的敲出子类的行为并不像它应该的那样。

下面是代码的一小部分:

代码语言:javascript
复制
tubs.Gen2Event = function (data) {
    var self = this;
    //...Set a bunch of props...
    return self;
}

tubs.Gen2LandedEvent = function (data) {
    var self = this;
    ko.utils.extend(self, new tubs.Gen2Event(data));
    // If I exclude the following mapping call, the object is fine
    ko.mapping.fromJS(data, {}, self);
    //...Other methods that worked fine before mapping...
}

我熟悉自定义映射,但从我所能找到的信息来看,它似乎是用于微调子属性,而不是修改整个对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-26 15:20:38

我会使用真正的原型继承,如果我在你那里,例如

http://ejohn.org/blog/simple-javascript-inheritance/

http://jsfiddle.net/4Kp3Q/

代码语言:javascript
复制
Person = Class.extend({
  init: function(data){
      this.firstname = ko.observable();
      this.lastname = ko.observable();      
      ko.mapping.fromJS(data, {}, this);
  }
});

Employee = Person.extend({
  init: function(data){
      this.salary = ko.observable();     
      this._super(data);
  }
});

var data = { firstname: "foo", lastname: "bar", salary: 200000 };
ko.applyBindings(new Employee(data));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16224941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档