3

私はKnockout.jsにかなり慣れていないので、これはばかげた質問かもしれません。

バインディングのドキュメント、特にオプションのバインディングを読んでいます。バインディングを適用すると、次のようになります。

以前のオプションはすべて削除されます。

既存のオプションを保持する方法はありますか?

<select data-bind="options: availableOptions, optionsText: 'name', value: selectedOption">
    <option value="1">One</option>
    <option value="2" selected>Two</option>
</select>

<script type="text/javascript">
    var option = function(name, value) {
        this.name = name;
        this.value = value;
    };
    var viewModel = {
        availableOptions : ko.observableArray([]),
        selectedOption : ko.observable()
    };
</script>
4

2 に答える 2

6

Nikoの提案に基づくと、答えは、宣言型バインディングと静的データの混合を避けるのが最善だと思います。ビューが変更される可能性が低い場合は、データをビューに配置します(選択のオプション要素)。動的な場合は、データをKOビューモデルに配置します。

私のシナリオでは、前者です。

<select data-bind="value: selectedOption">
    <option value="1">One</option>
    <option value="2" selected>Two</option>
</select>

<script type="text/javascript">
    var viewModel = {
        selectedOption : ko.observable()
    };
</script>
于 2012-04-21T19:33:12.407 に答える
0

どのバックエンドを使用していますか?既存のすべてのオプションをjsonオブジェクトに入れ、ビューモデルにhttp://knockoutjs.com/documentation/plugins-mapping.htmlを入力することをお勧めします

于 2012-04-20T17:24:37.270 に答える