问题标签 [knockout-2.0]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
671 浏览

knockout.js - 强制原生敲除模板

我有一个需要 jQuery.tmpl 的页面,但我想使用原生敲除模板

属性。因为我已经包含了 jQuery.tmpl,knockout 的原生模板被禁用;有没有办法可以强制使用本机功能?

谢谢

0 投票
1 回答
2173 浏览

knockout.js - Knockoutjs afterRender 未在本机模板上触发

考虑一些使用 MVC 局部视图创建对话框的 HTML 标记。在视图模型上设置 selectedMember 时,将填充对话框并调用 openDialog 事件,该事件调用 Jquery 对话框(“打开”)。

我使用 afterRender 事件来确保不显眼的验证工作,因为对话框是动态创建的。然而 afterRender 函数从未被调用?

有谁知道为什么这不起作用。使用 Jquery 模板引擎似乎可以正常工作。

0 投票
2 回答
2146 浏览

javascript - KnockoutJS - 更新数组时表不更新

我在这里创建了一个问题示例:

http://jsfiddle.net/JustinN/qWeLT/1/

我的实际代码与 ASP.NET Web 方法相关联,因此示例代码已被调整为指向公共 Web 服务以进行演示。

基本上,我有一个绑定到的数组,但是在 ajax 调用之后,该表不显示更新的信息。我不确定我错过了什么,起初我认为我需要映射插件,所以我已经尝试过了,但仍然没有得到任何结果。

当然我不是每次我的数据更改时都应用绑定吗?

[编辑]

下面的 JavaScript:

下面的 HTML:

0 投票
3 回答
17177 浏览

knockout.js - 从 JSON 更新 Knockout.js Observable

我正在尝试建立一个网格并通过 JSON 使用更多记录对其进行更新。在这个简单的示例中,我能够实现所需的功能,但我只能更新/推送一条 JSON 记录。我希望能够通过 JSON 添加多条记录?我怎么能做到这一点?我以为我可能必须创建某种 for 循环并将每个 JSON 结果推送到 observable 但我希望淘汰赛可能有更好的方法来通过 JSON 更新/解析?

这是我迄今为止所取得的成就的副本:http: //jsfiddle.net/sparkhill/crSbt/

更新这似乎有效,但我想知道他们是否是一种更有效的方法?

0 投票
1 回答
438 浏览

knockout.js - 淘汰赛:数组的部分映射

看看这个小例子

在此示例中,数据被部分映射。首先来自 Days 对象,然后(通过单击更新按钮)来自 DaysUpdate 对象。第二次更新从数组中删除“Monday”和“Tuesday”对象。我如何让那些留下来?

PS。感谢 Mark Robinson 提供了结构更好的示例。

0 投票
8 回答
50242 浏览

javascript - 将真/假绑定到 Knockout JS 中的单选按钮

在我的视图模型中,我有一个值为真或假的 IsMale 值。

在我的 UI 中,我希望将其绑定到以下单选按钮:

我认为的问题是checked需要一个字符串“true”/“false”。所以我的问题是,我怎样才能得到这个带有这个 UI 和模型的 2-way 绑定?

0 投票
1 回答
1322 浏览

javascript - 从外部视图模型层次结构范围遍历剔除到根

如果我不在淘汰对象层次结构的上下文中(例如在全局引用的公共类中),是否可以

  1. 确定是否存在整体根视图模型(换句话说,确定是否为当前视图调用了 applyBindings)?
  2. 如果存在,请找到我当前所在视图的整体根视图模型?

有谁知道这样做的任何实用程序或扩展?

0 投票
1 回答
1882 浏览

javascript - 可观察数组中项目属性的自定义绑定,如何访问该项目?

背景

我有一个 GalleryImages 可观察数组,其中每个项目都有与图像相关的属性(名称、描述、路径等)。淘汰赛 foreach 遍历对象数组以生成包含图像、名称和描述的跨度。如果用户单击图像名称或描述,他们可以编辑值并按保存/取消以更新视图模型。

问题

鉴于自定义绑定绑定到可观察数组中某个项目的属性,您如何在自定义绑定的定义中访问该属性所属的项目?我想获取刚刚编辑的项目并将其传递给一个函数,该函数将通过更改更新服务器。

我尝试查看 allBindingsAccessor(),但它返回项目的属性,而不是项目本身。

HTML

knockoutJS这是 clickEditor 的自定义绑定

0 投票
1 回答
830 浏览

knockout.js - Knockout 映射插件或我的代码中的数组错误?

在使用 KO 映射插件更新页面上的数据时,我最近注意到一些有关的事情。我认为第一个现在已在 2.1.1 中修复,下面显示的第二个仍然存在:

我有一个简单的模型。问题在于它包含的地址数组。似乎当我使用映射插件时,它会跟踪数组中的 2 个元素,而实际上只有一个元素。我不确定这是否是我的代码或映射插件的问题。请考虑以下简单示例:

0 投票
2 回答
4555 浏览

asp.net-mvc - Knockout.js:无法绑定到自定义 @Html.EditorFor

我正在使用选择器来构建自定义 @Html.EditorFor(称为 @Html.FullFieldEditor)。它确定要生成的输入类型(文本框、下拉菜单、单选按钮、复选框等)。我一直试图将它连接到一个单选按钮列表中,因此:

或像这样:

但没有运气。

我试图修复我的selector.cshtml代码,但结果却弄得一团糟。这是在我尝试实现之前对我有用的代码knockout.js

任何帮助是极大的赞赏。

编辑 我试图最小化现有JS代码(超过 1500 行)以显示/隐藏 KO(这似乎能够大大减少代码)。我知道我有 KO 的选择(visible,if等),但假设我想用 KO 完成的事情是可行的,我可以选择visible. 无论如何,越过约束障碍会阻止我走得那么远。

这是我用来显示/隐藏的一些代码示例JS

我认为KO可以最小化上述情况。同样,我正在查看 20-30 个输入,大多数有 3 个以上的选择(少数在下拉菜单中有 10 个选择)。这越来越难以维持在 1500 行并且还在增长。

然后在我的view我有这样的事情:

上面的view代码会随着 KO 的变化而略有变化,但JS我再次尝试减少它。

编辑 2 这是FullFieldEditor. 为简洁起见,省略了某些部分(例如 和 的代码RequiredFor)。ToolTipForSpacerFor

更新 3 选项不起作用。选项 1 甚至不会显示data-bind<input>. 选项 2 将不起作用,因为它只是检查该字段是否是必需的(如果是,代码只显示“必需”图像)。

当我在您的“UPDATE2”( )之前尝试您的第一个建议input.MergeAttributes(new RouteValueDictionary(htmlAttributes));时,输出如下:

由于我将属性与输出的input部分合并,这就是放置它的位置(这是合乎逻辑的)。请注意,它应该是但在课堂上显示。这就是我拥有的方式:TagBuilderfield-input <div>data-binddata_bindfield-inputFullFieldEditor

我认为它应该显示的内容是这样的:

我怀疑我必须把它htmlAttributes放到Selector.cshtml上面,而不是在HtmlFormHelper.cs文件中。这Selector.cshtml是在显示例如下拉列表、单选按钮列表或复选框列表(以及其他)之间做出决定的原因。是文件夹中的Selector.cshtml模板。Shared\EditorTemplates

背景:我有几十个表格,代表几十个页面(或向导)上的数百个输入。我之所以使用@Html.FullFieldEditor它是因为它比为每种类型的输入(下拉菜单、复选框、单选按钮等)使用意大利面条代码更容易维护。

更新 4 仍然无法正常工作。

我在Selector.cshtml(它的BuildInput函数)代码中尝试了这个,并且能够将“数据绑定”放入<input>列表中每个单选按钮的标签中:

然后我在同一个文件中做了这个:

我的 HTML 输出是这样的:

这就是让我相信这是Selector.cshtml文件,而不是HtmlFormHelper.cs文件的原因。

我将向所有 50 岁以上的人开放赏金。