gpt4 book ai didi

javascript - Knockout ViewModel 基类,Javascript 继承

转载 作者:行者123 更新时间:2023-12-03 08:21:43 25 4
gpt4 key购买 nike

我最近在很多项目中都使用了 Knockout.js,并且我正在编写很多重复的代码。我希望能够定义一个 BaseViewModel类并让我的特定于页面的 ViewModel 继承自它。我对如何做到这一点感到有点困惑是 Javascript。这是我的基本 BaseViewModel :

(function (ko, undefined) {
ko.BaseViewModel = function () {
var self = this;
self.items = ko.observable([]);
self.newItem = {};
self.dirtyItems = ko.computed(function () {
return self.items().filter(function (item) {
return item.dirtyFlag.isDirty();
});
});
self.isDirty = ko.computed(function () {
return self.dirtyItems().length > 0;
});
self.load = function () { }
};
}(ko));

我希望能够列出 load 等方法的签名在 BaseViewModel然后在继承的 ViewModel 中给它们定义。这有可能吗?我在网上找到了一些解决方案,但它们都依赖于定义函数/类来使继承工作。

最佳答案

由于您的BaseViewModel只是将所有属性/方法添加到 this (并且不使用原型(prototype))那么这很容易:

在您的新 View 模型中,只需调用 BaseViewModel :

var MyVM = function () {
var self = this;
ko.BaseViewModel.call(self);

self.somethingElse = ko.observable();
self.itemCount = ko.computed(function() { return self.items().length; });
self.items([1, 2, 3]);
};


// ...
var vm = new MyVM();

关于javascript - Knockout ViewModel 基类,Javascript 继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16569810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com