私はquestionをknockoutJSフォーラムに投稿しました。しかし、今夜まで援助を受けるかどうかはわかりません。だから私は同じ質問を掲示している:それは緊急の種類です。私はあなたの提案を待っている:foreach(KnockoutJS)内のバインディングを使用して
ビュー:
<select data-bind="foreach: groups">
<!-- ko if: false -->
<optgroup data-bind="attr: {label: label}, foreach: children">
<option data-bind="text: label"></option>
</optgroup>
<!-- /ko -->
<!-- ko ifnot: false -->
<option data-bind="text: label"></option>
<!-- /ko -->
</select>
JS:
function Group(label, children) {
this.label = ko.observable(label);
this.children = ko.observableArray(children);
}
function Option(label) {
this.label = ko.observable(label);
}
var viewModel = {
groups: ko.observableArray([
new Group("Option All", null),
new Group("Group 1", [
new Option("Option 1"),
new Option("Option 2"),
new Option("Option 3")
]),
new Group("Group 2", [
new Option("Option 4"),
new Option("Option 5"),
new Option("Option 6")
]),
new Group("Group 3", [
new Option("Option 7"),
new Option("Option 8"),
new Option("Option 9")
])
])
};
ko.applyBindings(viewModel);
結果:
<select>
<optGroup>Option All</optGroup>
<option>Option All</option>
<optGroup label="Group 1">
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
</optGroup>
<option>Group 1</option>
<optGroup label="Group 2">
<option>Option 4</option>
<option>Option 5</option>
<option>Option 6</option>
</optGroup>
<option>Group 2</option>
<optGroup label="Group 3">
<option>Option 7</option>
<option>Option 8</option>
<option>Option 9</option>
</optGroup>
<option>Group 3</option>
</select>
期待される結果:
<select>
<option>Option All</option>
<optGroup label="Group 1">
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
</optGroup>
<optGroup label="Group 2">
<option>Option 4</option>
<option>Option 5</option>
<option>Option 6</option>
</optGroup>
<optGroup label="Group 3">
<option>Option 7</option>
<option>Option 8</option>
<option>Option 9</option>
</optGroup>
</select>
0を
"Result"と "Expected Result"の違いを考慮して 私は何が間違っているのですか?たとえ私は静的な値を "if"バインディングに与えます。例えば、 "<!-- ko if: false -->
"というバインディングです。
あなたはどのようなブラウザを使用していますか?ここであなたのコードはフィドルです:http://jsfiddle.net/jearles/9PmGj/。それはSafariを使って私のために働く。仕事で私たちは最近、コンテナレスのバインディングからIE 7とIE 8との互換性を得るために切り替えなければなりませんでした。 –
私はIE 7を使用しています。 「コンテナレスバインディング」とは、jQuery.tmplを意味しますか? – rebulanyum
コンテナレスバインディングは、ノックアウト2.0に組み込まれたテンプレートの一部であり、開発中ではなくなったjQuery.tmplを置き換えます。詳細はhttp://knockoutjs.com/documentation/template-binding.htmlを参照してください。 –