knockoutJS 포럼에 question을 게시했습니다. 그러나 나는 오늘 밤까지 내가 도움을받을 지 확신이 없다. 그래서 나는 같은 질문을 올리고있다 : 그리고 그것은 긴급한 일이다; 난 당신의 제안을 기다리고 :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>
"Result"와 "Expected Result"의 차이를 고려하여 내가 뭘 잘못하고있는 걸까요? 심지어 정적 값을 "if"바인딩에 부여합니다. "<!-- ko if: false -->
"바인딩입니다.
? 여기에 당신의 코드가 있습니다 : http://jsfiddle.net/jearles/9PmGj/. 그것은 나를 위해 사파리를 사용하여 작동합니다. 직장에서 우리는 최근 컨테이너가없는 바인딩에서 IE 7과 IE 8과의 호환성을 위해 전환해야했습니다. –
IE 7을 사용하고 있습니다. 어떻게해야합니까? "containerless binding"이란 jQuery.tmpl을 의미합니까? – rebulanyum
컨테이너리스 바인딩은 녹아웃 2.0에 내장 된 템플릿의 일부이며 더 이상 개발되지 않는 jQuery.tmpl을 대체합니다. 자세한 내용은 http://knockoutjs.com/documentation/template-binding.html을 참조하십시오. –