淘汰ViewModel基类,Javascript继承

2024-01-04

我最近在很多项目中使用了 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 in the BaseViewModel然后在继承的 ViewModel 中给它们定义。这有可能吗?我在网上找到了一些解决方案,但它们都依赖于定义函数/类来使继承起作用。


自从你的BaseViewModel只是将所有属性/方法添加到this(并且不使用原型)那么这很简单:

在您的新视图模型中,只需调用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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

淘汰ViewModel基类,Javascript继承 的相关文章

  • Ajax文件上传

    我想使用 Ajax 和 php 上传文件 我有一个表格
  • 如何从 JavaScript 中的字符串中删除空白字符?

    如何从 JavaScript 中的字符串中删除空白字符 修剪很容易 但我不知道如何将它们从inside字符串 例如 222 334 gt 222334 您可以使用正则表达式 如下所示来替换所有空格 var oldString 222 334
  • 在 Google 表格脚本中设置活动单元格的值

    我想创建一个公式 在某个单元格更改上创建时间戳 下面的代码就可以了 我现在想做的是将公式转换为纯文本 将该时间戳锚定到工作表上 如果您手动执行此操作 您将选择时间戳 复制它们并将它们粘贴为值 我不想手动执行此操作 因此我创建了下面的脚本 它
  • 按键对 JavaScript 对象进行排序

    我需要按键对 JavaScript 对象进行排序 因此 以下内容 b asdsad c masdas a dsfdsfsdf 会成为 a dsfdsfsdf b asdsad c masdas 这个问题的其他答案已经过时 与实施现实不符 并
  • 如何设置上传的文件名?

    By using multer I made it to request image file like this 这个文件存储在我设置的 上传 文件夹中 我的代码如下 var multer require multer var uploa
  • React Native:不透明视图内的透明视图

    我想用不透明框架和透明中心显示相机的视图 就像图片中的一样 黑色部分是相机的视图 我正在寻找具有纯反应本机组件的解决方案 没有额外的库 例如https github com gilbox react native masked view h
  • JavaScript - 无需布尔值即可运行一次

    有没有办法只运行一段JavaScript代码ONCE 而不使用布尔标志变量来记住它是否已经运行过 具体来说not就像是 var alreadyRan false function runOnce if alreadyRan return a
  • 您可以将现有的 div 复制到模式对话框吗

    我有一个带有多个面板的仪表板来显示不同的信息 我希望能够添加一个按钮来以模式显示面板 我正在使用引导程序 我所能找到的只是已经编写的模态 我想复制作为面板的 div 标签的内容 然后将其显示在模型中 但我不确定如何进行 该面板的 html
  • 如何在 Sequelize ORM 中限制连接行(多对多关联)?

    Sequelize 定义了两种模型 具有多对多关联的 Post 和 Tag Post belongsToMany db Tag through post tag foreignKey post id timestamps false Tag
  • 如何强制折断不可折断的字符串?

    我有一个根据数据库中包含的数据生成的 HTML 页面 数据库有时包含浏览器无法分解的长字符串 因为这些字符串不包含可分解的字符 空格 点 逗号等 有没有办法使用 html css 甚至 javascript 来解决这个问题 看到这个link
  • 使用命名的成功/错误回调在 AngularJS 中声明一个 Promise

    我正在尝试做一些与 http 服务非常相似的事情 根据我的理解 http 返回一个 Promise 对象 使用它时 语法是 http success function data success callback error function
  • Angularjs 完整日历不显示事件

    我正在用那个https github com angular ui ui calendar https github com angular ui ui calendar在 Angularjs 中使用 FullCalendar 它显示日历并
  • setInterval() 在用户离开选项卡时暂停?

    javascript 中是否有任何方法的行为类似于 setInterval 并且当用户离开选项卡时停止并在用户再次进入选项卡时恢复 您可以使用以下方法创建自己的 API可见性API https developer mozilla org e
  • 窗口大小调整触发的 DOM 事件

    我有一个布局相当复杂的页面 最初打开页面时 某些元素的对齐存在问题 但是 可以通过更改浏览器窗口的大小来 永久 解决此问题 显然 我不希望用户必须调整浏览器窗口的大小才能使页面正确显示 所以我想知道是否有一种方法可以在页面首次加载时以编程方
  • ReactCSSTransitionGroup 组件WillLeave 未调用

    我尝试使用 ReactCssTransition 但不知何故该事件没有被调用 componentWillLeave 这是我的组件 import React Component from react import TransitionGrou
  • 自定义指令链接中的 element.replaceWith 仅在第一次调用时有效

    我是 Angularjs 的新手 不太了解幕后的情况 基本上我想创建一个 E 扭结指令 基于控制器中的数据 我动态创建html 就像整个 表 一样 以替换该指令 我的 html 文件中的指令是这样的
  • 根据特定字符获取整个字符串或子字符串

    我有一个包含 MIME 类型的字符串 例如application json 现在我想将其与实际的 HTTP 标头进行比较 在本例中content type 如果标头包含 MIME 类型 那么就很简单 if mimeType contentT
  • 弹出窗口的动态高度取决于内容,可能吗?

    是否有可能获得一个宽度始终为 400px 的弹出窗口 但根据弹出窗口中的内容动态高度 我已经看到了这个 但不知道如何将其应用到弹出窗口 调整 iframe 的宽度高度以适应其中的内容 https stackoverflow com ques
  • Javascript 中 if 语句中的假值?

    过去两周 我在学校研究 JavaScript 的事情已经有一段时间了 而且我一直在做我的作业 在 Douglas Crockford 所著的 JavaScript The Good Parts 一书中 作者在第 11 页上列出了 if 语句
  • p5 向量减法“sub”返回错误

    我一直在尝试将 p5 草图上传到 React 构建中 使用react p5 wrapper 我能够成功在屏幕上渲染画布 但是 某些矢量函数会导致错误 var distance this position dist ball position

随机推荐

  • 通过身份验证访问 Samba 共享,无驱动器映射 - C# [重复]

    这个问题在这里已经有答案了 我正在尝试启动与需要身份验证的 samba 共享的连接 我不想映射驱动器 共享的凭据始终相同 一旦通过身份验证 我就可以使用常规路径来使用它 我正在使用 C net 有任何想法吗 我用谷歌搜索了一些东西并阅读了模
  • 在C中,从main调用函数[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 在 C 中
  • 如何限制应用程序仅适用于 Android 手机

    您好 我的目标用户是Android仅限电话 我想限制应用程序的安装Android仅限手机 不适用于平板手机和平板电脑 我需要在 AndroidManifest xml 中应用哪些配置 以便 Google Play 应用程序不会在表格和平板手
  • 使用 pygame.midi 演奏音符

    我正在尝试使用 pygame midi 模块播放声音 这是我的代码 使用 usr bin env python import pygame midi import time pygame midi init print pygame mid
  • 使用 selenium web 驱动程序在多个浏览器上运行测试

    我试图通过 for 循环在多个浏览器上运行相同的测试 但它始终只在 Firefox 上运行 bros FIREFOX CHROME INTERNET EXPLORER for bro in bros print Running bro n
  • 如何将S3存储桶中的图像文件直接读取到内存中?

    我有以下代码 import matplotlib pyplot as plt import matplotlib image as mpimg import numpy as np import boto3 s3 boto3 resourc
  • 有效绘制字节数组流以在 Android 中显示的选项

    简单来说 我需要做的就是在Android中显示视频帧的实时流 每帧都是YUV420格式 我有一个回调函数 我在其中接收单个帧作为字节数组 看起来像这样的东西 public void onFrameReceived byte frame in
  • 最佳实践 - 发送 javamail mime 多部分电子邮件 - 和 gmail

    我有一个 Tomcat 应用程序需要发送确认电子邮件等 我已经使用 Javamail mail jar 对电子邮件程序进行了编码以发送多部分文本 html 电子邮件 我的代码基于 Java EE 示例 我在本地服务器上使用 SMTP MTA
  • xamarin应用程序启动缓慢

    我们正在 PCL 上开发一个跨平台应用程序 但目前我们仅使用 Android 设备进行测试 我们担心的是 启动应用程序需要大约 6 到 8 秒 取决于我们测试的设备 这非常慢 设置几个断点后 我们发现时间消耗得相当均匀 我们确实注意到这个特
  • 模态图像库 - 多张图像

    我目前正在尝试根据此处的代码制作一个图片库 http www w3schools com howto howto css modal images asp http www w3schools com howto howto css mod
  • 限制 jQuery UI 中的可拖动区域

    我正在尝试在 div 内创建一个可拖动区域 它工作正常 但我不想要可拖动区域之外的空白区域 因此想要限制可以拖动的区域 到目前为止我想到的是在这个小提琴里 http jsfiddle net kBVFC 图像最初位于父 div 的左上角 如
  • 是否可以?匹配完全相同数量的左大括号和右大括号

    我不是正则表达式专家 我正在尝试创建一个正则表达式来匹配完全相同数量的左大括号和右大括号 但我不知道如何做到这一点 一个例子 nothing important a b c a another nothing or one two erro
  • 如何模板重载一组相关类的运算符而不与标准库运算符冲突?

    这似乎是一个相当简单的想法 我有一组类 我应该能够使用基本上完全相同的代码为其编写一个运算符 比如说减法 当尝试以 明显 的方式做到这一点时 即 template
  • 在Qt中获取MAC ID

    我正在使用以下代码来获取 Qt 中的 MAC ID main cpp include
  • AppBarLayout + TabLayout + CollapsingToolbarLayout + SwipeToRefresh

    我遇到了很多与我的问题相关的问题 但我发现没有人想要我正在寻找的行为 我想要一个带有选项卡和应用程序栏的视图寻呼机 当包含的片段可滚动并滚动 向底部 时 我希望应用程序栏消失 但保留选项卡 当向顶部滚动时重新出现 其中一些片段包含 Swip
  • iOS safari 移动浏览器的 navigator.getUserMedia 替代 API?

    我知道下面的代码将从 ios 6 safari 移动浏览器捕获图像
  • 使用 div 作为提交按钮

    我想在提交按钮中转换由图像 文本 用于翻译 组成的div 是否可以 我设法使用图像作为提交 但文本不是链接 它给整个图像 文本带来了 破碎 的感觉 div div
  • NSJSONSerialization 和 Unicode 不能很好地结合在一起

    我正在制作一个使用套接字和 JSON 与 Nodejs 服务器通信的应用程序 由于 iOS 5 有自己的 NSJSONSerialization 我认为这可能是我要遵循的道路 之前我使用的是轻量级的yail库 无论如何 在迁移到 NSJSO
  • 如何在 sbt shell 中设置子项目的设置(不使用项目命令)?

    在 sbt shell 中如何设置子项目 我知道我可以project subproject then set key value 但我不想一直切换项目 理想情况下 与以下内容没有太大不同 set key in subproject valu
  • 淘汰ViewModel基类,Javascript继承

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