2

Knockoutjs を使用して、ユーザーがドロップダウンで行った言語選択に基づいて、Web ページのラベルの言語/コンテンツを動的に変更しようとしています。

現時点では、構文に苦労しています。jsFiddleで私の状況の例を提供しました

私は何ができますか:

  • 選択の値 (id) を取得します。
  • 次のように手動でインデックスを入力して、言語配列から「選択された」ラベル コンテンツを取得/表示します。

    self.chosenLang = languages[0];
    

私ができないこと:

  • 選択の値 (id) を使用して、言語配列から「選択された」ラベル コンテンツを取得/表示します。このようなもの:

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

1 に答える 1

1

Fiddle を更新しました: 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()括弧を使用していることに注意してください。これは、オブザーバブルに直接アクセスするのではなく、オブザーバブル データにアクセスしたいためです。

于 2012-04-25T14:03:40.927 に答える