问题标签 [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 回答
1195 浏览

knockout.js - 更新模型内部的可观察对象,但不触发剔除模型的相关事件

嗨,我有一个由变量持有的淘汰赛模型:

如果我这样做:

它触发了敲除(?)的绑定事件并刷新了用户界面我如何在不影响整个屏幕的情况下更新敲除Observable的值?换句话说:更新模型上的值但不更新 UI

我知道这有点奇怪,因为这是与 MVVM 的交易,但我需要它用于特定场景......

编辑:我想要做什么:我在屏幕上有一些 jsTrees。它们受限于模型。当我更新模型中的某个 observable 时,所有的树都被重新渲染并关闭到默认状态。它给了我一个糟糕的用户体验
,所以因为当我在树中更改一个值时 UI 已经更新为正确的值(这就是我构建它的方式)我不需要淘汰赛来重新渲染树。只是模型上的值。

我有一个用于树的自定义绑定处理程序:

谢谢

0 投票
2 回答
11737 浏览

javascript - 具有 $index 绑定的备用行样式

我无法将备用行 css 类应用于具有 foreach 绑定上下文的剔除模板。我正在使用带有可用$index上下文变量的淘汰赛 2.1。

这是令人困惑的:

我的模板

导致没有alt应用任何类,但是:

正常工作并显示行号。

0 投票
1 回答
1592 浏览

knockout.js - 淘汰赛可观察阵列未按预期工作

我是 Knockout.js 的新手,我创建了一个可观察数组并使用一些数据进行了初始化。我期待任何时候 UI 发生变化(复选框或文本值),模型也应该得到更新。

我也订阅了数组。但我的回调方法永远不会被调用。

http://jsfiddle.net/2NMJX/

0 投票
1 回答
779 浏览

javascript - 带有嵌套模板的 KnockoutJS 绑定

我在使用 Knockout.JS 的嵌套绑定时遇到问题

例如,如果我在 app.js 文件中有以下内容:

以及以下视图:

每当另一个 WriteupModel 被推送到属于 selectedUser 的 writeups 数组时,表就不会更新。这是我试图完成的简化版本,但可以假设当他们创建一个 writeup 时,它应该根据新信息更新 write-ups 表。

我是 Knockout 的新手,因此我们将不胜感激!

谢谢。

-=-= 编辑 1 =-=-

需要注意的一件事是,如果您重新加载 selectedUser 的绑定,它将为添加的 writeup 吐出 empWuItem 模板。这似乎效率低下,因为绑定应该在将 WriteUp 添加到 UserModel 中的 writeups 可观察数组时触发,而不必“重新分配”视图模型中的 selectedUser 属性。

0 投票
2 回答
2078 浏览

jquery - 防止单击复选框时自定义 Knockout/jQuery 扩展器的展开/折叠

这是一个参考这个问题的小提琴:http: //jsfiddle.net/CJRDQ/3/

我创建了一个简单的自定义扩展器,如下所示:

扩展器的功能是通过自定义 Knockout.js 绑定和一些 jQuery 实现的(使用自定义绑定是为了解决由with绑定创建的问题)。

除非扩展器头中有可点击的控件,否则这将按预期工作。在我当前的场景中,我需要在扩展头中提供一个复选框来过滤视图模型中的结果:

如果我单击标签,则不会触发展开/折叠行为,并且选中/取消选中相应的复选框(需要)。但是,如果我直接单击复选框,则会触发展开/折叠并选中/取消选中相应的复选框(不需要)。

我需要能够在不触发展开/折叠的情况下单击复选框和/或标签,但如果单击扩展器头的任何其他部分,则保持展开/折叠。需要做些什么来满足这些要求?

同样,我提供了一个小提琴供参考:http: //jsfiddle.net/CJRDQ/3/

0 投票
1 回答
242 浏览

jquery - 在模板中设置自定义绑定,作为自定义绑定的一部分

这个主题有点令人困惑,但这是我想要做的:

我创建了一个 KnockoutJS 自定义绑定来在我的页面上显示一个网格。这很好用,我遵循了网站上的 SimpleGrid 模型。但是,我的一些字段是日期、布尔值等。我想使用自定义绑定来使用 time ago 插件等转换日期。在构建网格之前,我只需在网格中分配自定义绑定。现在我正在使用“可重用”网格绑定,我希望能够传入(作为列定义的一部分)绑定和值的列表,以便在模板中为网格的标题和单元格分配。

这是我页面中的 HTML:

这是 HTML 页面视图模型:

这是我的自定义网格绑定和模板:

是否有捷径可寻?

谢谢

0 投票
1 回答
598 浏览

templates - 什么情况下 Knockout 原生模板会重新渲染

我有一个复杂的淘汰页面,它有条件地呈现模板:

和模板:

这让我感到困惑。标记中有一堆元素会改变$data对象的属性。这些不会导致模板重新渲染。但是,由于某种原因,当单击某个复选框 ( questionDisplayOptionOverride) 时,会重新呈现完整模板并调用我的afterRender函数$root.initializeEditPanel。我不知道为什么会发生这种情况,因为questionDisplayOptionOverride 控件仅更改对象computedObservable内部的$data属性,而不是实际$data对象本身。

所以我的问题:

在什么情况下模板会完全重新渲染?

很明显,如果模板条件'if': $root.itemToEdit.SomeObject() === $data发生了变化,模板会重新渲染,但是还有其他条件会发生这种情况吗?

由于我的页面的复杂性,jsFiddle 不是一个选项。我对导致模板重新渲染的一般机制更感兴趣。


编辑:请参阅afterRender 模板调用似乎是作为 computedObservables 执行的。为什么以及如何解决它?作为对此的后续问题。

0 投票
2 回答
2569 浏览

knockout.js - 如何以固定次数呈现内联模板

我有一个搜索结果屏幕,在提供的结果有效负载中,我得到了一个 pageCount 号码。有了这个,我打算创建一个简单的寻呼机。

所以我真的需要这样做:

显然这不起作用,但你明白我的意思。我想我可以在视图模型上创建另一个 observableArray 整数,每个项目代表一个页面,但这似乎有点过头了。但是,这可能是我唯一的选择?!

哦,好吧,我想我最好问一下,因为有时有一些杀手功能可以在飞行中创建一个范围,然后我可以超越那个坏男孩。

Anyhooo,我想你明白我的意思。谢谢

0 投票
1 回答
469 浏览

knockout.js - $.expandingTextarea 的自定义绑定与 knockout.js

我正在编写一个自定义绑定以将$.expandingTextareaKnockout.js一起使用。

继出色的文章Another Look at Custom Bindings for KnockoutJS之后,我希望它会像下面这样简单:

不幸的是,这并没有按预期工作 - 即当对 textarea 进行更改时,相应的视图模型不会更新。这是一个说明问题的jsFiddle。

如何为扩展文本区域插件创建 KO 自定义绑定?

0 投票
1 回答
1386 浏览

knockout.js - 使用ko.renderTemplate的插件中的knockoutjs“无法解析绑定”

我创建了一个 knockoutjs 插件,该插件最终在其绑定处理程序的“更新”部分中使用了 ko.renderTemplate。该代码会产生预期的输出,但也会引发“无法解析绑定”错误。

可以在 jsfiddle 上的http://jsfiddle.net/rhoadsce/VSWK2/上找到此问题的重现。

javascript如下:

html同样简单。