Javascript 使用Knockoutjs动态调整页面内容以适应用户的语言选择?

Javascript 使用Knockoutjs动态调整页面内容以适应用户的语言选择?,javascript,knockout.js,localization,Javascript,Knockout.js,Localization,我正在尝试使用Knockoutjs根据用户在下拉列表中选择的语言动态更改网页上标签的语言/内容 目前,我正在努力学习语法。 我已经举了一个例子来说明我在这方面的情况 我能做什么: 检索所选内容的值(id) 通过手动输入如下索引,从语言数组中检索/显示“所选”标签内容: self.chosenLang = languages[0]; self.chosenLang = languages[self.selectedChoice]; 我不能做的事: 使用所选内容的值(id),从语言数组中

我正在尝试使用Knockoutjs根据用户在下拉列表中选择的语言动态更改网页上标签的语言/内容

目前,我正在努力学习语法。 我已经举了一个例子来说明我在这方面的情况

我能做什么:

  • 检索所选内容的值(id)
  • 通过手动输入如下索引,从语言数组中检索/显示“所选”标签内容:

    self.chosenLang = languages[0];
    
    self.chosenLang = languages[self.selectedChoice];
    
我不能做的事:

  • 使用所选内容的值(id),从语言数组中检索/显示“所选”标签内容。大概是这样的:

    self.chosenLang = languages[0];
    
    self.chosenLang = languages[self.selectedChoice];
    

我已经更新了你的小提琴:

我所做的是在
selectedChoice
observable上添加了一个订阅,这样我就可以检测到它何时发生变化。订阅的一个方便之处是,在调用订阅服务器时,订阅服务器包含发布服务器的值,因此函数中有参数
choice

self.selectedChoice.subscribe(function(choice) {
   self.chosenLang(languages[choice]);        
});
然后,我将
chosenLang
提升为可观察对象,以便让DOM检测其上的更改。此更改还使我更改了html中的绑定,我必须使用以下内容:

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


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

非常感谢您的帮助!事实上,我曾试图在某个时候使用订阅,但显然当时我做错了其他事情。