0

私はknockoutjsを使い始めたばかりです。selectオプション値をknockoutdata-bindプロパティでバインドしようとしましたが、配列値を別のオプションとして取得できません。comaseparetdとして入力されます。試したサンプルコードを添付していましたが、他の人にも同じ奇妙なエラーが発生することを願っています。

self.availableStates = new Array(); 
for (var i=0;i<self.allStates.length;i++)
{
if (self.allStates[i]['name'] != null)
self.availableStates.push(self.allStates[i]['name'])
}
self.availableStates = ko.observableArray([self.availableStates]);

期待される結果:

<select id="drpDwnLst" data-bind="options: availableStates">
    <option value="">State4</option>
    <option value="">State3</option>
    <option value="">State2</option>
    <option value="">State1</option>
</select>

実結果

<select id="drpDwnLst" data-bind="options: availableStates">
    <option value="">State4,State3,State2,State1</option>
</select>
4

1 に答える 1

1

toString()出力に表示されるのは、配列 を呼び出すことの効果です。

availableStates はすでに配列であるため、この結果が得られます。そのため、 次の配列に再度ラップする必要はありません。[]

だからあなたはただ書く必要があります:

self.availableStates = ko.observableArray(self.availableStates);

self.availableStates定義を上書きする方法は奇妙ですが...

于 2013-03-25T11:19:09.700 に答える