Knockout.js 有没有办法在淘汰赛3.0中手动更新observable?

Knockout.js 有没有办法在淘汰赛3.0中手动更新observable?,knockout.js,Knockout.js,我正在寻找一种手动更新observable的方法。我已经检查过了,但是当我尝试做类似的事情时,我没能达到我的预期 我需要它的目的如下。在我的真实代码中,我有类似的东西(包括JS)。真正的代码要大得多,我试图制作一个可复制的示例,但它并不真正代表我试图解决的问题: HTML <button data-bind="click: changeLang">Change</button> <div data-bind="foreach: last"> <d

我正在寻找一种手动更新observable的方法。我已经检查过了,但是当我尝试做类似的事情时,我没能达到我的预期

我需要它的目的如下。在我的真实代码中,我有类似的东西(包括JS)。真正的代码要大得多,我试图制作一个可复制的示例,但它并不真正代表我试图解决的问题:

HTML

<button data-bind="click: changeLang">Change</button>
<div data-bind="foreach: last">
    <div data-bind="text: lang[$data]"></div>
</div>

我想让它在人们点击按钮时改变语言。这正是我想要手动更新observable的原因。有办法做到这一点吗?

您将变量“lang”设置为可观察变量

var lang = ko.observable({1: "eine", 2: "zwei"});
然后,在你的方法中

lang(getRandomLang());
这就是你更新可观测数据的方式。知道你想做什么会容易得多,因为我不确定这是否会给你想要的结果。它会更改lang的值,并更新直接绑定到lang的任何内容,但大多数情况下,可观察属性会包装用于显示的原语


您希望创建一个表示UI的模型,在该模型中将表示您的数据,。然后,当您的数据更改时,您可以更改这些值(通过单击、ajax调用等…)

这个。最后一个(getRandomLang())
?您的示例中有一些事情让您很难看出您真正想要的是什么,但我已经设置了一个小提琴,展示了实现我认为您想要的目标的一种方法的示例(当然有很多可能的方法),试图对您的代码进行很少的更改,您可以在以下网址找到:。如果有任何不清楚的地方,我建议您首先阅读上的教程,如果仍然不清楚,请进行澄清。@robert.westerlund很抱歉我的例子很蹩脚。我只是创建了一些东西来描述我想要的东西。显然这不好。我想ted手动更改observable。您的示例确实有效(谢谢),但有没有办法手动更新observable?您说的“手动更新observable”是什么意思?哪个observable?最后一个observable?我链接的小提琴会手动更新可观察的
语言,所以只需执行
自我上次([1,2,1,1,1,2,1]))
或类似内容,以更新上次观察到的
。同样,请阅读我上面链接的教程(这也很好,因此阅读它可能也是一个很好的建议);他们可能会为您回答很多问题。我现在还更新了小提琴,以更新上次观察到的
;可以在中找到更改。但是,请务必阅读教程和文档。
lang(getRandomLang());