Knockout JS模型继承

Bil*_*ull 24 javascript inheritance knockout.js

我的应用程序中有三个相对类似的淘汰模型,我想扩展一个基本模型来组合常见属性而不是重复三次.

var ItemModel = function (item) {
  var self = this;

  self.order = ko.observable(item.order);
  self.title = ko.observable(item.title);
  self.price = ko.observable(item.price);
  self.type = ko.observable(item.type);
};

var StandardItemModel = function (item, cartItemTypes) {
  var self = this;

  self.order = ko.observable(item.order);
  self.title = ko.observable(item.title);
  self.price = ko.observable(item.price);
  self.type = ko.observable(item.type);

  self.isInCart = ko.computed(function () {
    return cartItemTypes().indexOf(item.type) > -1;
  }, self);

  self.itemClass = ko.computed(function () {
     return self.isInCart() ? "icon-check" : "icon-check-empty";
  }, self);
};

var CustomItemModel = function (item) {
  var self = this;

  self.order = ko.observable(item.order);
  self.title = ko.observable(item.title);
  self.price = ko.observable(item.price);
  self.type = ko.observable(item.type);

  self.icon = item.icon;
};
Run Code Online (Sandbox Code Playgroud)

我想使用ItemModel作为基类,并根据需要添加额外的属性.

Mar*_*o A 39

我想你可以像这样使用ko.utils.extend

ko.utils.extend(self, new ItemModel(item));
Run Code Online (Sandbox Code Playgroud)

在StandardItemModel中

像这样:http://jsfiddle.net/marceloandrader/bhEQ6/