knockoutjs:我们可以创建一个带有参数的 dependentObservable 函数吗?

2024-01-31

我有多个输入框,我想根据用户的选择隐藏/取消隐藏它们。

我可以通过为每个输入设置一个单独的 dependentObservable 并依次使 dependentObservable 观察父级选择来实现此目的。

viewModel.showField1= ko.dependentObservable(function () {
    return viewModel.selectedType() ? IsFeatureVisible(viewModel, "BusinessFieldName1") : false;
}, viewModel
);

viewModel.showField1= ko.dependentObservable(function () {
    return viewModel.selectedType() ? IsFeatureVisible(viewModel, "BusinessFieldName2") : false;
}, viewModel
);

对于每个领域来说,这都是一件乏味的事情。我可以将元素与可以接受参数的依赖 Observable 函数绑定吗?重要的是当父级发生变化时应该触发它

其他选项是,当父级更改时,我循环遍历元素并隐藏/取消隐藏,但这需要我映射该字段的元素 id 公司名称。

Current

 <tr data-bind="visible: showField1">
 <tr data-bind="visible: showField2">

Desired

<tr data-bind="visible: showField('BusinessFieldName1')">
<tr data-bind="visible: showField('BusinessFieldName2')">

在 Knockout 中,绑定是使用 dependentObservable 在内部实现的,因此您实际上可以在绑定中使用普通函数来代替 dependentObservable。绑定将在 dependentObservable 内部运行您的函数,因此任何访问其值的 observable 都将创建依赖项(您的绑定在更改时将再次触发)。

这是一个示例:http://jsfiddle.net/rniemeyer/2pB9Y/ http://jsfiddle.net/rniemeyer/2pB9Y/

html

type "one", "two", or "three": <input data-bind="value: text" /> 
<hr />
<ul data-bind="template: { name: 'itemTmpl', foreach: items }"></ul>

js

<script id="itemTmpl" type="text/html">
    <li data-bind="text: name, visible: viewModel.shouldThisBeVisible(name)"></li>
</script>

var viewModel = {
    text: ko.observable("one"),
    items: [{name: "one"}, {name: "two"}, {name: "three"}],
};

viewModel.shouldThisBeVisible = function(name) {
    return this.text() === name;
}.bind(viewModel);

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

knockoutjs:我们可以创建一个带有参数的 dependentObservable 函数吗? 的相关文章

  • 在模板内对 $data 进行双向绑定

    我正在尝试设置通用的 Knockout 模板 可以根据数据类型在编辑和只读模式之间切换 如果您曾经使用过 ASP NET 的动态数据 它就像它们的字段模板 例如 这是这样使用的
  • 根据控制器响应动态更改视图部分

    我正在寻找以下场景的最佳方法建议 用户可以选择一个或多个 csv 文件进行验证 附件 1 单击 验证 按钮会执行验证代码 显示进度条 直到返回输出 返回响应可以是成功消息 也可以是选择验证的每个文件的错误详细信息 附件 2 现在可以使用 上
  • 如何将 Knockout js 模型绑定到向导风格的 UI

    我正在使用 Knockout js 我有一个包含对象数组的视图模型 我希望允许用户使用向导样式界面编辑其中一个对象 我遇到的问题是向导将根据所做的选择显示不同的步骤 例如 如果用户在步骤 1 中选择 是 则我将显示步骤 2a 如果用户在步骤
  • 我可以对每个对象属性执行 jquery-tmpl 吗

    模板 each 指令非常适合迭代数组 如下所示 var myArray a b c 我想知道是否有等效的对象属性迭代 即 var myObj propOne a propTwo b propThree c 我想要一个可以让我输出的模板 ul
  • 制作一个没有 new 关键字的 javascript 淘汰视图模型

    我正在浏览淘汰教程 所有示例都使用 new 关键字创建视图模型 from learn knockoutjs com function AppViewModel this firstName ko observable Bert this l
  • 如何使用淘汰赛映射插件添加新项目

    我正在尝试一个淘汰制图样本 我想我已经快完成了 我似乎无法向 viewModel foos 添加新的 Foo 谁能看到我在这里错过了什么 var Foo function data var self this self id data id
  • 何时使用 ko.utils.unwrapObservable?

    我使用 KnockoutJS 编写了一些自定义绑定 我仍然不确定何时使用ko utils unwrapObservable item 查看代码 该调用基本上检查是否item是一个可观察的 如果是 则返回value 如果不是 则返回value
  • jquery .html() 追加后绑定不起作用

    我有这个简单的 div div div 它是空的 现在我正在尝试附加这个HTML到上面的div div div
  • Knockoutjs 当父级可观察到的更改时更新子级

    当使用 KnockoutJs 父可观察更改时 如何触发子元素的更新 在我的应用程序中 我正在构建一个翻译工具 我有一个淘汰赛类 表示某些文本的原始 默认 值 以及翻译后的子项的集合 function ParentObject id defa
  • 暂停 knockout.js 1.2.1 中的绑定

    淘汰赛中有暂停和恢复绑定的选项吗 版本 knockout js 1 2 1 我们需要暂停绑定的原因如下 在某些操作过程中 我们必须从服务器加载大量数据 例如 多个选择的整个数据都已更改 有些表的行是动态添加的等 现在 在当前场景中 表单与视
  • $root 和 $parent 有什么区别?

    我正在学习 KnockoutJS 但我不明白两者之间的区别 root and parent用法 请参见这个jsfiddle http jsfiddle net supercool 2gt4K 27 或下面的代码 div data Value
  • 当具有复杂类型时,KnockoutJs 中的值绑定无法进行选择

    我正在尝试在选择元素上使用值绑定 如本小提琴中所述 http jsfiddle net MikeEast nM6dd 2 http jsfiddle net MikeEast nM6dd 2 但是 我似乎无法设置所选选项 值绑定 我知道我可
  • 使用 knockout.js 防止双击按钮

    禁用按钮以便 Knockout js 不会发生双击的最佳方法是什么 我有一些用户快速点击导致多个 ajax 请求 我认为 knockout js 可以通过多种方式处理这个问题 并希望看到一些替代方案 使用信号量 旋转锁 基本上 您计算一个元
  • Knockout.js、映射插件和 moment.js - 格式化/映射 json 日期

    我将 Knockout js 与映射插件一起使用 我正在获取一些 json 数据并使用映射插件将其映射到我的 html 中 json 数据中是 json 格式的日期 我需要使用映射插件将其映射到 html 中 是否可以使用 moment j
  • 在 KnockoutJS 中更改模型数据时,Javascript 内存泄漏

    我们正在构建一个相当大的单页应用程序 使用 KnockoutJS 作为 数据处理程序 问题是 当更改模型数据时 垃圾收集器不会处理旧模型 看起来如此 该应用程序有大约 12 个不同的模型 其中包含计算的可观察量 您可以使用它们检索关系 在
  • Knockout ObservableArray 不更新 HTML Foreach

    所以我有一个可以正常工作的 observablearray 但 UI 没有更新 我读过很多人遇到这种类型的问题 但我没有看到 所以 HTML 是 tbody tr td span class label label success Yup
  • Edge 中的 Javascript 仅适用于打开的 devtools

    我遇到的问题是 在 MS Edge 中 我的图像映射功能只能部分工作 它由淘汰赛 FW 提供动力 在更大的图像映射上 它不会将整个图像映射注册到视图模型中 因此 图像映射的所有悬停效果和单击样式都会停止工作 然而 这只是大图像地图的问题 还
  • 如何将 HTML 表格导出到 Chrome 和 IE 支持的 Excel?

    在我的 MVC 项目中 我有一个与 Knockout 绑定的 HTML 表 我正在尝试将表格导出到 Excel 我在客户端尝试使用 JavaScript self exportToExcel function javascript wind
  • 淘汰赛绑定,每个都可进行自定义

    我这里有一个情况 用于淘汰每个带有定制的绑定 这是我的代码 div div table tbody tr td td td td tr tbody table div div
  • KnockoutJS 中的最大值和数值验证

    如何实现最大值验证并检查可观察值是否为数字 例如 self MyInteger ko observable extend numeric 2 extend maxValue params 255 message MyInteger cann

随机推荐

  • AngularDart 组件和模型绑定

    是否可以将 AngularDart ngComponent 绑定到模型 然后从组件操作该模型 并查看 ngComponent 外部更改之外的更改 例如
  • WordPress - $wpdb->插入 - MySQL NOW()

    是否有可能在 wpdb gt insert 调用中使用 MySQL NOW 当我使用以下代码时 NOW 不起作用 data array id gt NULL order gt serialize POST data Order create
  • 从另一个 .ipynb 文件导入函数

    我在名为 functions ipynb 的文件中定义了一个 hello world 函数 现在 我想使用 导入函数 导入另一个文件中的函数 我确信它们位于同一个文件夹中 但是 它仍然显示 ImportError 没有名为函数的模块 顺便说
  • fputs和fflush,写入和缓冲过程

    我对 C 中的写入处理如何进行感到困惑 所以我有一个字符串 s 我想将其写入输出 为此 我使用 fputs fputs s stdout 但显然这不会写入输出 而只是收集数据进行写入 具体是在哪里收集的 所以我必须等到程序退出或者直到我调用
  • 如何正确使用SerialPort.DiscardInBuffer?

    我编写了一个应用程序 它以非常快的速度从串行设备读取数据 然而 串行端口对象无法触发收到数据 https learn microsoft com en us dotnet api system io ports serialport dat
  • 删除单链表中的元素

    在此代码中 我删除链接列表中的元素 11 gt 12 gt 13 gt 14 gt 15 gt 12 gt 16 如果我想删除 12 它只删除第一次出现的元素 即 o p 将是 11 gt 13 gt 14 gt 15 gt 12 gt 1
  • Orgmode:如何过滤掉缠结的块?

    在 Orgmode 中 有没有办法仅缠结子树中与特定标签匹配 或不匹配 的块 例如使用以下代码 A BEGIN SRC c printf Not exported END SRC B D BEGIN SRC c printf Exporte
  • 从 Flutter 中的 Firestore 集合中获取所有内容

    我在我的项目中设置了 Firestore 我创建了名为的新集合categories 在此集合中 我创建了三个具有唯一 ID 的文档 现在我想在我的 Flutter 应用程序中获取这个集合 所以我创建了CollectionReference
  • 测试使用 Hooks 获取数据的 React 组件

    我的 React 应用程序有一个组件 可以从远程服务器获取要显示的数据 在前钩时代 componentDidMount 是该去的地方 但现在我想为此使用钩子 const App gt const state setState useStat
  • 从 PHP 数组中删除“<”和“>”标签

    我有一个像这样的数组 Array 0 gt lt email protected cdn cgi l email protection gt 1 gt lt email protected cdn cgi l email protectio
  • 创建两个日期之间所有天数的向量

    R 中是否有一种简单的方法可以列出两个指定日期之间发生的所有有效日期 例如 我想要以下输入 itemizeDates startDate 12 30 11 endDate 1 4 12 生成以下日期 12 30 11 12 31 11 1
  • 如何在rails活动记录查询中使用包含内部的联接?

    我只是想改进查询 从而提高应用程序的性能 Student includes parents gt emails where emails email address is not null and emails email address
  • VBA 用户窗体:相同字体大小的文本根据 Top 属性更改大小

    我有一个用户表单 在多个不同控件的多种情况下 我观 察到具有相同宽度 高度 字体和字体大小的对象显示不同的字体大小 具体取决于它们在用户窗体上的放置位置 上面是一个例子 这两个文本框的宽度均为 26H 和 48W Left 为 90 两者的
  • 将带有两个参数的函数应用于列

    你能用两个不同列中的值作为参数创建一个 pandas 函数吗 我有一个函数 如果两列的值在同一范围内 则返回 1 否则返回 0 def segmentMatch RealTime ResponseTime if RealTime lt 56
  • 响应正文为空,状态为 200

    我正在使用 Angular 的新 HttpClient 来处理请求 当我使用旧的 http 时 我的组件返回正文文本很好 但现在正文文本为空 我不明白 服务器正在发送它 但我总是收到 null 作为正文 响应的所有其他部分都是正常的 状态
  • UI - 如何同时显示 GridView 和 Linear 布局

    我想在网格视图下方显示 GridView 带有文本和图像 和文本框组 问题是我的 gridview 没有固定的条目 它在 1 和 10 之间变化 我想根据网格视图中的项目数量调整它的大小 我怎样才能做到这一点 在哪里可以获取JAVA代码中g
  • 如何检测 Android 中 ListView 项目的双击? [复制]

    这个问题在这里已经有答案了 我想做一些像 instagram 应用程序这样的事情 当用户在照片上双击它时 它就像 而他只按一次标签 它会以全屏方式打开 如果您不需要防止单击被触发 您可以做得更简单 Override public void
  • 类型重载宏

    我有一堆 printf 调试辅助宏 如果不指定类型 那会很酷 您可以做些什么来允许 c 中的宏重载 如果在 gcc 4 3 中可用 则可以是 gcc 特定的 我想也许是 typeof 但显然这不起作用 示例宏 我还有一些 ascii 终端颜
  • asp.net 和 .net Framework 版本是否相同?或者asp.net或clr版本是否相同?

    这是我之前的问题你好 我是网络框架的新手 你能告诉我 net框架版本和asp net版本不同吗 clr版本和asp net版本有一定关系 我如何从注册表中获取 asp net 版本 谁能给我一份版本列表 但我对这个链接感到困惑 看看瓦伦的回
  • knockoutjs:我们可以创建一个带有参数的 dependentObservable 函数吗?

    我有多个输入框 我想根据用户的选择隐藏 取消隐藏它们 我可以通过为每个输入设置一个单独的 dependentObservable 并依次使 dependentObservable 观察父级选择来实现此目的 viewModel showFie