0

我有一个视图模型(调查),它有一个成员(questions.current),它是一个指向当前问题的索引器。每个问题都有一个需要绑定到屏幕的属性 (.text)。这是场景:

survey.questions.current.text
survey.questions.movenext()

我希望屏幕上的文本显示当前问题的文本值。随着我的前进,我希望此文本能够自动更新。

处理它的一种方法是拥有一个(ko.observable)survey.questions.currentText 属性,该属性在执行 movenext 或 moveprevious 函数时自动更新。但是,这可能不是最干净的方法,因为我还有其他值(包括与单个问题相关的选择)也需要在屏幕上更新,并且我不想为每个属性创建重复项。

将 text 属性设为 observable 是不合适的,因为问题文本永远不会改变。当前选择的问题发生了变化,需要触发屏幕上项目的更新。

处理这个问题的正确方法是什么?

4

1 回答 1

1

with绑定是一种选择,如此处所示,在这个小提琴中。由于currentQuestion是可观察的,因此虚拟元素将随之更新,即使绑定到不可观察的属性也是如此。

<!-- ko with: currentQuestion-->
    <span data-bind="text: text"></span>
<!-- /ko -->​

我不知道您实际上是如何更改选择的,所以我只是将它绑定到 a select,但是您可以根据需要进行选择。

于 2012-08-16T22:52:28.523 回答