问题标签 [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 投票
2 回答
1419 浏览

binding - Knockoutjs 原生模板绑定和简单的字符串数组

我正在尝试理解本机knockoutjs 模板绑定,尤其是foreach 绑定

只是想知道如何使用本机出价访问当前项目?jQuery.tmpl可以使用/$item之类的东西$data。当数据源是基元数组时如何使用本机模板绑定执行相同操作,因此每个项目都没有命名字段?这是带有两个示例的JSFiddle,第一个 - 使用本地绑定,其中数据源是自定义对象数组,第二个 - 绑定到字符串数组。我无法让它工作,看起来我错过了一些明显的东西?

基本上,我试图理解本机绑定并能够使用本机绑定重构以下示例:JSFiddle:逗号分隔的已检查项目列表,因此我将能够保留一个可观察变量,该变量表示以逗号分隔的已检查项目列表。

0 投票
2 回答
1837 浏览

knockout.js - KnockoutJS 选择查找

我正在尝试将带有 KnockoutJS 的选择绑定到来自我的模型的预定义值。根据文档,这应该来自value属性,但我无法基于此在下拉列表中预先选择一个值。这是反映我遇到的问题的示例代码:

在我的绑定中,我想使用一个简单的表格,其中第一列预先选择了查找值,在这种情况下,默认情况下是播放器的“位置”。这是一个例子:

查找似乎绑定好了(选择填充了查找中的所有位置值)但是默认情况下未选择给定玩家的位置。谁能发现我在哪里做出了错误的假设或错误?

0 投票
1 回答
3462 浏览

knockout.js - KnockOut 映射分层 JS 对象

我正在尝试使用 KnockOut 映射插件创建视图模型,

这是对象,基本上下面是一个带有单词的句子。

我想要三个视图模型,

文章应该包含句子,一个句子应该包含单词

我想把它放在下面的视图中;

我什至不确定我想要实现的目标是否可行,但我想我需要映射,但我无法完成这项工作,

这是我的一些试验,也许有助于更好地理解我的问题, http://jsfiddle.net/sureyyauslu/2wTjy/6/

非常感谢提前...

0 投票
1 回答
317 浏览

javascript - 如何在单独的“线程”或异步中为模板应用绑定?

不知道是否有可能,因为我在网上找不到任何东西。我有一个 KO 模板,我有大约 100 条记录。

在 IE 8 中(由于其次优 JS 引擎),页面加载大约需要 15 秒。在 Firefox 中,大约需要 6 秒。

我已经确认在 IE 中大约 5 秒会丢失到ko.applyBindings.

有没有办法异步应用绑定?也许有一个加载图标,以便用户可以在 KO 处理模板时继续使用页面。

0 投票
1 回答
1297 浏览

templates - HTTP Cache KnockoutJS 原生模板

有了新的 KnockoutJS 原生支持 DOM 的模板,生活会变得很简单。

但有时页面包含数百万个,所有模板都是静态的或只是 i18n'zed。因此,最好通过单独的 HTTP 调用从服务器检索模板,这样浏览器就可以将它们缓存为静态文件。

它将大大减少流量和整个服务器负载!页面将很轻,并且仅包含更改的数据。存储在 CDN 中的模板。这只是个梦!

使用 jQuery.tmpl 和 require.js 是可能的。但是如何用淘汰赛本身来做到这一点?

按需按名称加载模板是完美的,就像__autoload()模板的 php 一样,但至少以某种方式将模板作为远程 html 文件包含到页面中并解析它们以进行剔除会很棒。

你知道怎么做吗?

0 投票
2 回答
1242 浏览

javascript - 如何在 Knockout 中选择性地绑定属性

我希望根据模型\对象状态设置不同的数据主题属性。在这里,我只是为数据主题属性(jQuery Mobile)设置了“b”或“d”。我可以让它工作:

这有点难看。我想(希望)我可以在属性绑定器中使用表达式,但是 Knockout 绑定引擎不喜欢我给它的东西。

有没有比我正在使用的“ko if”和“ko ifnot”更清洁的方法?

0 投票
1 回答
5031 浏览

javascript - 带有复选框和单击句柄的剔除列表绑定

这是我的 jsfiddle 用于说明:http: //jsfiddle.net/hawaii/gN6CT/10/

我有一个 json 对象列表,我想使用 jquery 模板将其绑定到 ul 中,在每个 li 中,我都有一个用于每个项目的复选框,以及项目详细信息。我希望它的工作方式是:

当用户单击复选框时,该项目将更新为选定列表(得到这个工作)

当用户单击项目的详细信息时,该项目将被选中,我将在右侧显示所有详细信息。这就是为什么我将项目详细信息放入元素中的原因。

正如您从小提琴中看到的那样,它没有按照我希望的方式工作,即使第一次应用 viewModel 也会调用单击绑定,并且当我单击复选框时,它也会调用单击事件。

请各位淘汰大师帮我解决这个问题。谢谢

0 投票
1 回答
1431 浏览

asp.net-mvc - 我做这个淘汰赛绑定不正确吗?

视图代码:

视图模型代码:

型号代码:

上面的代码在 IE (8) 和 Chrome (17) 中按预期工作,但在 FF (10.0.2) 中没有。我基本上是在尝试做一个类似于 GitHub 问题标签的颜色选择器。该视图呈现一组单选按钮,您可以单击以选择颜色。检查收音机时,我将selectedcss添加class到 parent <li>。css 类导致复选标记图标出现在<li>.

在 Firefox 中,选定的 css 类仅在用户完成并检查每个单选按钮至少一次后才会应用。我调试并发现这是因为在闭包中计算计算的self.Colorobservable的方式。BackColorOption在第一次检查无线电之前,typeof(self.Color) == 'function'评估为真。然而,在它被检查之后,typeof(self.Color) == 'string'评估为真。

typeof(self.Color)根据 Firebug 和 Chrome 的 js 调试器,这种行为是相同的。然而,FF 中的问题是由于闭包中self.Selected计算的 observable 中的这一行:BackColorOption

即使self.Color是函数而不是字符串,Chrome 和 IE 仍然返回 true。然而火狐没有。当self.Color是一个函数时,它返回false。这就是为什么在将 css 类添加到图标并出现图标之前,您必须至少检查每个收音机一次<li>

我对淘汰赛还是有点陌生​​,并且可能没有适当地将 viewmodel 属性作为函数调用。我仍然有点不清楚何时使用()括号以及何时省略它们。还有另一种方法我应该编写self.Selected计算的可观察对象,这取决于self.Color计算的可观察对象(在BackColorOption闭包中)?

更新 1

我能够通过以下方式使其在 FF 10.0.2 中工作:

然而,这感觉就像我在与淘汰赛作斗争。它不应该“正常工作”吗?

0 投票
2 回答
1319 浏览

.net - 使用映射插件时未从服务器更新 Knockout.js 可观察数组

我在使用 Knockout.js 及其映射插件时遇到了一些问题。本质上,我想从没有数据开始,然后在页面加载时发出 Ajax 请求以加载信息。我知道 Ajax 请求正在按预期工作,因为我正在将返回的数据记录到控制台。

控制台正在正确记录数据。所以我知道 Ajax 请求工作正常。

控制台正在正确记录数据。 所以我知道 Ajax 请求工作正常。 l

查看标记:

我什至试过打电话:

但这只会让事情变得更糟,因为 KO 抱怨没有设置绑定。 在此处输入图像描述

谁能看到我做错了什么?最终我希望视图模型有更多的事件连接,我知道这将是另一个挑战。但是现在我什至无法在 Ajax 请求完成时正确更新绑定。

离开这里的教程:http: //knockoutjs.com/documentation/plugins-mapping.html

- - - - - - - - - - 更新 - - - - - - - - - - - - -

我可以通过参考这个 StackExhange 帖子来回答我自己的问题:

Knockout JS 映射插件混淆

问题是我需要一个空的视图模型才能工作。

0 投票
2 回答
14348 浏览

javascript - 替换 Knockout.js observableArray 中的所有元素

我的视图模型中有一个observableArray。创建 vm 后,我希望将数据完全替换为observableArray. 这是我的做法:

这似乎工作正常,但我担心这是否不正确并可能导致内存泄漏。如果这是更新现有observableArray假设您希望替换其所有数据的首选方式,任何人都可以遵守吗?

我注意到observableArray确实有一个removeAll()方法,并且想知道是否需要调用它来干净地执行此操作,或者我是否对我正在做的事情感到满意?