2

我正在尝试使用 Knockoutjs 根据用户在下拉菜单中所做的语言选择来动态更改网页上标签的语言/内容。

目前我正在为语法而苦苦挣扎。我在jsFiddle中提供了我的情况示例

我可以做什么:

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

    self.chosenLang = languages[0];
    

我不能做的:

  • 通过使用选择的值 (id) 从语言数组中检索/显示“选择的”标签内容。像这样的东西:

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

1 回答 1

1

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

我所做的是我在selectedChoiceobservable 上添加了一个订阅,以便我可以检测到它何时发生变化。订阅的一个方便之处是它们在订阅者被调用时包含发布者的值,因此是函数choice中的参数。

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

然后我将其提升chosenLang为可观察对象,以使 DOM 检测到其上的更改。此更改还使我更改了 html 中的绑定,我必须在其中使用它:

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

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

于 2012-04-25T14:03:40.927 回答