2012-04-25 21 views
2

我正尝试使用Knockoutjs根据用户在下拉菜单中进行的语言选择动态更改网页上标签的语言/内容。使用Knockoutjs动态调整页面内容到用户的语言选择?

目前我正在努力的语法。 我提供了我的情况的例子jsFiddle

我能做些什么:

  • 检索选择的值(ID)。
  • 检索/通过手动输入这样的索引显示从语言阵列 “选择” 的标签内容:

    self.chosenLang = languages[0]; 
    

我不能做什么:

  • 使用选择的值(id)从语言数组中检索/显示“选定的”标签内容。事情是这样的:

    self.chosenLang = languages[self.selectedChoice]; 
    

回答

1

我已经更新了你的小提琴:http://jsfiddle.net/dWw7F/14/

我所做的是,我已经加上了selectedChoice观察到的一个订阅,这样我可以检测何时改变。订阅方便的一点是,它包含订阅者被调用时发布者的价值,因此函数中的参数choice

self.selectedChoice.subscribe(function(choice) { 
    self.chosenLang(languages[choice]);   
}); 

然后我促进了chosenLang以可观察到的,以使DOM检测就可以了变化。这种变化也让我更改绑定在html,在这里我不得不用这样的:

<p data-bind="text: chosenLang().q3"></p> 

注意,chosenLang()使用括号。这是因为我们想要直接访问观察数据而不是观察数据。

+0

非常感谢你的帮助!实际上我尝试在某个时候使用订阅,但显然当时我做了其他错误。 – 2012-04-25 14:27:37