Knockout:无需扩展模型即可选择表行?

2024-01-23

我有通过淘汰赛呈现的下表模板:

            <table class="gv" data-bind="visible: products().length > 0">
                <thead>
                    <th>Type</th>
                    <th>Name</th>
                </thead>
                <tbody data-bind="foreach: products">
                    <tr data-bind="click: $root.selectProduct">
                        <td data-bind="text: type"></td>
                        <td data-bind="text: name"></td>
                    </tr>
                </tbody>
            </table>

现在我想让行可单击,并希望在选择行时分配一个 css 类。 一次只能选择 1 (!) 行,因此必须取消选中其他行。

最简单的方法是使用选定的属性扩展我的模型(产品类),但这会破坏我与服务器端的 1:1 映射。

我应该如何解决这个问题? 你会如何处理这个问题?


这是我现在的最终解决方案,没有额外的隐藏单选按钮:

<tr data-bind="click: $root.selectProduct, css: { 'active-row': $root.selectedProduct() === $data }">

以及 ViewModel 中的 selectedProduct 实现:

function AppViewModel() {
    // Private
    var self = this;

    // Public Properties
    self.selectedProduct = ko.observable();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Knockout:无需扩展模型即可选择表行? 的相关文章

随机推荐

  • mysql tinyint(2) 与学说的布尔值映射不正确

    我使用 symfony2 和命令对数据库进行了逆向工程 php app console doctrine mapping convert php app console doctrine mapping import php app con
  • Android:setContentView() == getViewInflate().inflate()?

    我尽我最大的努力想出一种巧妙的方法来清理成堆的东西Blah blah Blah this findViewById R id blah 否则会污染我的小 Activity 的字段和 onCreate 方法 为此 我觉得我不应该对 XML 中
  • 当模块同名时导入 python 包

    我有一个模块blah time我在正常时间和日期操作周围进行一些健全性检查和包装函数 import time def sleep n time sleep n 当我打电话时sleep 它只会抛出最大递归错误 我猜命名空间是错误的 所以我尝试
  • HAVING 子句后面可以有 WHERE 子句吗?

    是否可以在 HAVING 子句后使用 WHERE 子句 我首先想到的是子查询 但我不确定 附 如果答案是肯定的 您能举一些例子吗 不 不在同一个查询中 The where子句位于having和group by 如果您想在分组之前过滤掉记录
  • 如何添加窗口消息事件监听器-Android WebView

    如何添加事件监听器来处理window message事件在一个WebView 我试过这个 webView evaluateJavascript window addEventListener message function e Andro
  • 如何获取 jinja2 模板中所有变量的列表

    我正在尝试获取模板中所有变量和块的列表 我不想创建自己的解析器来查找变量 我尝试使用以下代码片段 from jinja2 import Environment PackageLoader env Environment loader Pac
  • 我应该开发什么最低的 BlackBerry 操作系统?

    我正在为 BlackBerry 移动设备开发 Netflix 应用程序 我需要决定我应该开发的最低操作系统版本 取决于我选择的版本会产生一些设计影响 例如我可以使用哪些浏览器字段类等 归根结底是 我应该支持低于 OS 5 0 的版本吗 我会
  • 如何确定我使用哪个 GC?

    我没有指定任何GC 我认为我的JVM默认没有启用任何GC 当然我知道OpenJDK8默认使用ParallelGC 但我认为它应该可以通过命令行打印 如下所示 java XX PrintFlagsFinal grep Use grep GC
  • GCC循环展开标志真的有效吗?

    在C中 我有一个任务 我必须用以下方法进行乘法 反转 转置 加法等 huge矩阵分配为二维数组 数组的数组 我找到了 gcc 标志 funroll all loops 如果我理解正确 这将自动展开所有循环 而无需程序员做任何努力 我的问题
  • jQuery - 单击链接时将光标置于输入字段中

    我想在单击特定链接后将光标放在输入字段中 我将其用于小型搜索引擎 想象一个输入字段 然后一些链接在输入字段中添加一个字符串 例如 丹麦 英格兰等 现在我需要将光标放置在这样的位置 丹麦 此处 这可能吗 更新 我现在正在使用此代码来替换文本
  • 如何在应用程序运行之间本地检测用户的 iPhone 时钟进度?

    休闲游戏中的一个常见漏洞是人为地提前系统时钟以在游戏中向前跳跃 iOS 设备上的应用程序如何检测此类用户时钟提前 不得涉及网络通信 当时钟提前时 不得假设应用程序已打开 运行或暂停 必须检测时钟前进 仅检测时钟回滚是不够的 理想情况下 该解
  • 有没有办法在 Nuxt.js 中使用 sass 而不是 node-sass (sass-loader 的默认值)?

    我正在尝试在 Nuxt js 中使用 sass 包而不是 node sass 我找到了这样的配置 vue config js module exports css loaderOptions sass implementation requ
  • getUserMedia() 权限被拒绝

    我正在尝试使用测试屏幕共享getUserMedia 我有 Chrome 版本 28 和getUserMedia 屏幕捕获标志已启用 但我仍然收到权限被拒绝的错误 On this 屏幕截图演示 http simpl info screenca
  • 如何以声明方式将禁用/选中等伪布尔属性绑定到布尔值?

    有没有一种简单的方法来绑定属性 例如disabled or checked真 假属性 就像是
  • JavaScript(初级)Kata - 使用函数构建计算器

    我正在解决以下类型 编写一个程序 将 sum product mean 或 sqrt 中的一个作为第一个参数 并使用一系列数字作为进一步的参数 该程序将适当的函数应用于该系列 我已经解决了它 下面的代码 但它体积庞大且效率低下 我想重写它
  • Spark将列转换为存储在字符串中的sql类型

    简单的请求是我需要帮助将列添加到数据帧 但是该列必须为空 其类型来自 spark sql types 并且必须从字符串定义类型 我可能可以用 ifs 或 case 来做到这一点 但我正在寻找更优雅的东西 不需要为 org apache sp
  • Angular 客户端启用 CORS

    CORS 在服务器上运行良好并且按预期工作 我尝试使用 Angular HTTPClient 向服务器的 REST API 发送请求 但收到 CORS 错误 如果服务器上启用了 CORS 为什么会出现此错误 客户端不是应该没问题吗 Cros
  • 如何在 Angular 2 中定义全局变量,以便我可以将它们用于模板中的属性绑定?

    在我的 Angular 2 beta 14 应用程序中 我需要跟踪用户登录状态以便隐藏 显示某些元素 我遇到的问题是属性绑定没有按照我的方式工作 如下所示 我创建了一个类来存储和更新全局变量 应用程序全局 ts import Injecta
  • CMake FIND_LIBRARY:链接到指定库错误

    我已经在我的计算机上安装了 FFTW3 库 并且可以在 usr lib 中找到以下文件 libfftw3f so 3 libfftw3l threads so 3 libfftw3f so 3 3 0 libfftw3l threads s
  • Knockout:无需扩展模型即可选择表行?

    我有通过淘汰赛呈现的下表模板 table class gv thead th Type th th Name th thead tbody tr td td tr tbody table