如何使用knockout.js将页面绑定到集合中的项目

如何使用knockout.js将页面绑定到集合中的项目,knockout.js,Knockout.js,我有一个viewmodel(survey),其中有一个成员(questions.current),它是指向当前问题的索引器。每个问题都有一个属性(.text),需要绑定到屏幕。以下是场景: survey.questions.current.text survey.questions.movenext() 我希望屏幕上的文本显示当前问题的文本值。当我继续前进时,我希望此文本自动更新 处理此问题的一种方法是使用(ko.observable)survey.questions.currentText属

我有一个viewmodel(survey),其中有一个成员(questions.current),它是指向当前问题的索引器。每个问题都有一个属性(.text),需要绑定到屏幕。以下是场景:

survey.questions.current.text
survey.questions.movenext()
我希望屏幕上的文本显示当前问题的文本值。当我继续前进时,我希望此文本自动更新

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

<!-- ko with: currentQuestion-->
    <span data-bind="text: text"></span>
<!-- /ko -->​
将文本属性设置为可观察属性是不合适的,因为问题文本从不更改。更改的是当前选定的问题,需要触发屏幕上项目的更新


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

带有绑定的
是一个选项,如本文和中所示。由于
currentQuestion
是可观察的,因此虚拟元素将随之更新,即使绑定到不可观察的属性

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

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

wow。。好极了我昨晚开始使用击倒游戏,到目前为止我很喜欢。。这是迄今为止唯一的绊脚石。谢谢