如何使用 ViewModel 连接启用复选框

2024-01-11

我刚刚学习knockout.js。经过大量工作,我让这个小视图模型正常工作,但 ViewModel 的 shouldBeEnabled 方法看起来相当笨重。有没有更好的方法来绑定这个?

我想要实现的是,如果选择第一项,用户就无法选择第三项,反之亦然(如果用户选择了第三项,则无法选择第一项。)

看到这个fiddle http://jsfiddle.net/gregoryagu/rarKK/5/

<input type="checkbox" data-bind=" enable: shouldBeEnabled(reportType9, 9), checked:    reportType9    "  />Check 1
<br />

<input type="checkbox" data-bind=" enable: shouldBeEnabled(reportType11, 11), checked: reportType11" />Check 2

<br />
    <input type="checkbox" data-bind=" enable: shouldBeEnabled(reportType12, 12), checked: reportType12" />Check 3



function ViewModel() {
    var self = this;

    self.reportType9 = ko.observable(false);
    self.reportType11 = ko.observable(false);
    self.reportType12 = ko.observable(false);

    self.shouldBeEnabled = function (isChecked, id) {

            switch (id) {
                case 9:
                    if (isChecked()) {
                        self.reportType12();
                        return true;
                    }
                    else {
                        if (self.reportType12()) {
                            return false;
                        }
                    }
                    return true;
                    break;

                case 12:

                    if (isChecked()) {
                        self.reportType9();
                        return true;
                    }
                    else {
                        if (self.reportType9()) {
                            return false;
                        }

                    }
                    return true;
                default:
                    return true;
            }

    };

}



$(function () {
    ko.applyBindings(new ViewModel());
})

如果你想让逻辑远离你的视线,你也可以使用computeds.

http://jsfiddle.net/g2MQP/ http://jsfiddle.net/g2MQP/

function ViewModel() {
    var self = this;

    self.reportType9 = ko.observable(false);
    self.reportType11 = ko.observable(false);
    self.reportType12 = ko.observable(false);

    self.reportType9Enabled = ko.computed(function () {
        return !self.reportType12();
    });

    self.reportType11Enabled = ko.computed(function () {
        return true;
    });

    self.reportType12Enabled = ko.computed(function () {
        return !self.reportType9();
    });
}
ko.applyBindings(new ViewModel());

View...

<input type="checkbox" data-bind=" enable: reportType9Enabled, checked: reportType9    "  />Check 1
<br />

 <input type="checkbox" data-bind=" enable: reportType11Enabled, checked: reportType11" />Check 2

<br />
   <input type="checkbox" data-bind=" enable: reportType12Enabled, checked: reportType12" />Check 3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 ViewModel 连接启用复选框 的相关文章

  • JS 代码覆盖率

    我是测试场景的新手 我有一个问题想请你帮忙 例如 如果我有一个从 HTML JS 和 CSS 实现并调用其他 API 的 Web 应用程序 在测试此 Web 应用程序时 在进行功能测试时如何在浏览器中测量 HTML JS CSS 浏览器应用
  • Backbone.Marionette 与 Backbone-Boilerplate

    我是 Backbone 的新手 正在尝试决定如何进行开发 目前我想知道人们什么时候会使用backbone marionette而不是backbone boilerplate 据我所知 Marionette 的规范性更强 但这是大多数人进行开
  • React Native - “this.setState 不是一个函数”试图设置背景颜色动画?

    好吧 我只是想循环视图的背景颜色 在 3 4 种颜色之间渐变 我发现如何在 React Native 中对 ScrollView 的背景颜色进行动画处理 https stackoverflow com questions 50356933
  • Javascript 中的无限原型继承

    我正在学习 Javascript 中的原型继承 根据我的理解 我尝试使用它来将进程发送到无限递归链接中 我对原型继承的想法是一个对象 它是一个函数 保存原型链接 该对象的任何实例都指向它 因此 如果我说instance someproper
  • 为什么这个对象的“forEach 不是函数”?

    这可能真的很愚蠢 但我不明白为什么这不起作用 var a cat large a forEach function value key map console log value 未捕获的类型错误 a forEach 不是函数 http j
  • 如何将文本插入摩纳哥编辑器?

    我的应用程序中嵌入了摩纳哥代码编辑器 如何以编程方式在特定行上插入文本 var editor monaco editor create document getElementById container value First line n
  • 将模板添加为innerHTML 时,Angular 2 绑定/事件不起作用

    我正在尝试创建一个可配置的可重用表 单元格可以配置为具有 html 模板 我正在配置列 Review 拥有带有带有点击事件的锚标记的 html 模板 审核 行 到目前为止 我尝试将此模板作为innerHTML 插入 但所有角度绑定都不起作用
  • 降低 Nodejs 服务器上的 CPU 利用率

    我正在研究降低 CPU 利用率的有趣方法 在 NodeJS 服务器上 在我的研究过程中 我发现了以下文章 http engineering linkedin com nodejs blazing fast nodejs 10 perform
  • Ionic 和 Angular 2 - 拒绝应用“http://localhost:8100/build/main.css”中的样式,因为其 MIME 类型(“text/html”)不受支持

    My Ionic https en wikipedia org wiki Ionic mobile app framework 构建一直运行得很好 直到我想在我的 iPhone 上进行测试 所以我停止了我的服务器 做了一个ionic ser
  • 大型 AngularJS 应用程序设计

    我需要关于设计具有多个复杂模块的 AngularJS 应用程序的建议 并根据用户角色在身份验证和授权后加载模块 有些用户可以访问一个简单的模块 有些用户可以访问仪表板 有些用户可以访问 2 个以上的模块 我们已经确定了许多可以在不同模块中重
  • 最有用的 jQuery 原生 API 函数

    前 5 10 个最常用的 jQuery 本机 API 函数是什么 请不要建议 jQuery 函数本身 因为毫无疑问这是最常用的函数 如果可能的话 还请提供它们所涵盖的场景 提出这个问题的原因是我尝试创建一个类似 jQuery 的 API充足
  • 跨浏览器兼容音频有哪些选项?

    我正在使用这个功能 function playSound file MyAudio new Audio file MyAudio play 不幸的是 我正在努力寻找一种适用于所有浏览器的文件类型 Mp3 适用于 Chrome Safari
  • Rails:包括外部 JavaScript

    我想使用 JavaScript 库 例如 jQuery 插件 我是否使用 Rails 资产管道 或者我应该将其包含在 javascript include tag 中 我有哪些选择以及推荐的做法是什么 您会仅在几个页面上还是在整个应用程序中
  • 我可以使用 javascript 生成 JSON 文件吗?

    我想在域 example1 com 上创建一个页面 并获取 解析另一个域 example2 com json json 上的 JSON 文件 可以使用 javascript 生成 json 文件 在 example2 com 上 吗 我认为
  • WebRTC、getDisplayMedia() 不捕获远程流中的声音

    我有一个自己的网络应用程序 它基于peerjs库 它是一个视频会议 我正在尝试使用 MediaRecorder 进行录制 但我遇到了一个非常不愉快的情况 捕获我的桌面流的代码如下 let chooseScreen document quer
  • JS 中的 .Jar 文件

    有谁知道如何在 JS 中访问 jar 文件 我已经用 Java 创建了类并作为 jar 文件导入 我想从 JS 文件访问该类 大家好 我感谢你们所有人 我尝试在 Firefox XUL 中使用 JS 列出文件夹中的文件 但我做不到 然后我决
  • Mocha 测试对原生 ES6 模块的“esm”支持

    有一个很棒的帖子 使用 Mocha 和 esm 测试原生 ES 模块 https web archive org web 20220318155753 https alxgbsn co uk 2019 02 22 testing nativ
  • 如何判断CKEditor是否已加载?

    如何确定 CKEditor 是否已加载 我查看了API文档 但只能找到loaded事件 我想检查 CKEditor 是否已加载 因为如果我第二次加载它 我的文本区域就会消失 The loaded活动对我不起作用 instanceReady
  • 如何从 JavaScript 中的 URL 中提取主机?

    捕获域直到结束字符 我需要一个捕获的正则表达式example com在所有这些中 example com 3000 example com pass gas example com example com 如果您确实有有效的 URL 那么这
  • JavaScript TypedArray 混合类型

    我正在尝试使用 WebGL 并希望将一些不同类型混合到一个字节缓冲区中 我知道 TypedArrays 可以达到这个目的 但不清楚我是否可以与它们混合类型 OpenGL 顶点数据通常是与无符号字节或整数混合的浮点数 在我的测试中 我想将 2

随机推荐

  • Xamarin 表单中的轮播视图自动滑动

    我的页面底部有一个轮播视图 现在我希望图像每 2 秒自动滚动一次 我已经实现了相同的并且工作正常 Device StartTimer TimeSpan FromSeconds 2 gt SlidePosition if SlidePosit
  • 关于硬链接

    有人可以解释一下为什么内核不允许我们建立到目录的硬链接吗 无论是因为它打破了文件系统有向无环图结构的规则 还是因为其他原因 如果允许的话还会出现什么其他并发症 回到第 7 版 或版本 7 UNIX 时代 没有系统调用mkdir 2 and
  • 如何从具有字典列表的 json 将数据集加载到 pytorch torchtext.data.TabularDataset 中?

    我有一个字典列表如下 text The Fulton County Grand tags AT NP TL NN TL JJ TL text The jury further said tags AT NN RBR VBD 每个字典的每个值
  • 正则表达式查找一对周围数字不同的相邻数字

    我想找出是否有两个相邻的相同数字 并且这对数字前后的数字不同 例如 123456678 应该匹配 因为有一个双 6 1234566678 不应匹配 因为不存在具有不同周围数字的双精度数 12334566 应该匹配 因为有两个 3 到目前为止
  • 在 Gradle 构建脚本中访问 Teamcity 构建号

    如何在 Teamcity 执行的 Gradle 脚本中访问内部版本号和 VCS 结账号 在蚂蚁我可以使用 build number and build vcs number 1 分别 谢谢 这些只是 TeamCity 为 Ant Gradl
  • Java simpledateformat 英国时间

    我使用简单的日期格式来允许用户指定他们发送数据的时区 DateFormat df new SimpleDateFormat yyyy MM dd HH mm ss z 这工作正常 例如 df parse 2009 05 16 11 07 4
  • Inspired Lua程序在电脑和计算器上的不同

    I am attempting to create a simple quadratic formula program for my TI Nspire CX CAS I seem to have everything correct a
  • 如何向 JQuery 弹出窗口添加换行符

    如何在弹出窗口内容中添加换行符 换行符标记和换行符都不起作用 这就是我正在尝试的 foo hover function this popover title Bar content Line 1 br Line 2 n Line 3 pop
  • Flash逆向工程[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么我们不能一次从 System.in 读取一个字符?

    下面的程序打印标准输入上写入的每个字符 但仅在写入换行符后才打印 至少在我的系统上 public class Test public static void main String args throws java io IOExcepti
  • Spring Security如何在不登录的情况下更新用户详细信息

    我是 Spring Security 的新手 我已经实现了 UserDetails 来创建我自己的用户 我还有我的自定义 userDetailsS ervice 现在一切正常 但我需要在不登录的情况下更新有关我的用户的信息 如何做到这一点
  • WooCommerce REST API - 按修改日期过滤订单

    我正在使用 WooCommerce REST API http woocommerce github io woocommerce rest api docs introduction http woocommerce github io
  • 带有伪造霍夫曼表的 jpeg 可以恢复吗?

    我有一个在任何程序中都无法打开的 JPEG 在 Ubuntu 图像查看器中打开会产生 把照片传过去convert产生类似的结果 convert corrupt jpg out jpg convert im6 Bogus Huffman ta
  • 如何在 .NET 应用程序中使用 C++ 项目?

    我是一名普通的 NET 开发人员 旨在将 C 库集成到 NET 项目中 我有一些想法 但由于我总体上是 C 新手 所以我不知道我正在尝试使用的技术的局限性 C 项目本质上是一个快速声音渲染器 可以使用一堆不同的后处理技巧来播放多轨音频文件
  • self.tabBarController 为 NULL

    我创建了一个如下所示的 UITabBarController 并推送了一个 navigationController 但我现在无法设置选项卡栏项目的标题等 因为 tabbarcontroller 为 NULL 请你告诉我哪里出了问题 UIT
  • 为什么C语言不支持列主数组? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 查找 PHP 中最小的 int [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有 2
  • openpty() 的作用是什么? “openpty() 函数找到可用的伪终端”是什么意思?

    我觉得问这个问题很愚蠢 只是 RTFM 但我无法理解这个手册页 这手册页简介 http man7 org linux man pages man3 openpty 3 html描述openpty The openpty 函数找到可用的伪终端
  • gulp.src() 包含文件但忽略所有文件夹

    这个问题肯定有一个简单的答案 我找不到以前问过这个问题的人 什么通配模式可以包含文件夹中的所有文件但忽略所有子文件夹 gulp src 包括所有文件和文件夹 我只想要这些文件 而不必单独排除这些文件夹 只需使用nodir打电话时的选项gul
  • 如何使用 ViewModel 连接启用复选框

    我刚刚学习knockout js 经过大量工作 我让这个小视图模型正常工作 但 ViewModel 的 shouldBeEnabled 方法看起来相当笨重 有没有更好的方法来绑定这个 我想要实现的是 如果选择第一项 用户就无法选择第三项 反