javascript - Knockout JS模型继承

标签 javascript inheritance knockout.js

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

示例

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

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

最佳答案

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

ko.utils.extend(self, new ItemModel(item));

StandardItemModel 内部

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

关于javascript - Knockout JS模型继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14965596/

相关文章:

javascript - 使用 javascript 中的坐标更新 3d 矩阵

采用继承类的 C++ 非类型模板参数

javascript - 从 knockout 开始

knockout.js - 在 KnockoutJS 中触发 beforeRemove、afterAdd 处理程序

javascript - 将 JSON 对象转换为 knockout observable 在 IE8 中不起作用,但在所有其他浏览器中都起作用

javascript - ondrop 事件 - 创建新元素

javascript - textContent 返回未定义

javascript - 当成员使用 discord.js selfmute/selfdeafen/selfunmute/selfundeafen 时,我如何记录他们?

c# - 为什么派生类不能用扩展该接口(interface)的类型覆盖基类的接口(interface)类型抽象属性?

python - 如何(Sanely)扩展 sympy.Rational