체크 박스 목록에서 체크 된 바인딩에 문제가 있습니다.체크리스트 목록에서 체크 된 값을 선택하지 못했습니다.
JS
function vm() {
var self = this;
self.categories = [
{id: 1, name: "Category 1"},
{id: 2, name: "Category 2"},
{id: 3, name: "Category 3"}
];
// Assume this item came from server side,
// that's why i'm using the mapping plugin here.
var rawItem = { links: [1] };
self.item = ko.mapping.fromJS(rawItem);
}
ko.applyBindings(new vm());
HTML 당신이 바이올린에서 볼 수 있듯이
<div data-bind="foreach: categories">
<div>
<label>
<span data-bind="text: name"></span>
<input class="checkbox" type="checkbox" data-bind="checked: $root.item.links, attr: {value: id}">
</label>
</div>
</div>
<div data-bind="text: ko.toJSON(item.links)"></div>
, 첫 번째 문제는 self.category
항목에서 "ID"속성이 어떻게 든에 주조되어 있다는 것입니다 문자열, 그리고 비교 실패의 원인입니다. 어쨌든 문자열 links
을 캐스팅하는 것은 예상대로 작동하지 않습니다.
요약하면 목표는입니다. 페이지의 입력란을 categories
배열의 값에 따라로드하십시오.
나는 더 복잡한 시나리오에서 이것을 재현하고 있으므로 가능한 매핑 요소를 추가하기 위해 매핑 플러그인을 추가했습니다.
그것은 당신이 당신이 달성하기 위해 노력하고 무엇 쓴 것을 매우 분명하지 않다, 그건 거기 모두 다, 그냥별로 이해가 안가, 단계별로 설명해 주시겠습니까? –
바이올린을 실행하면 체크 박스가 예상 된 확인 상태 (범주 1에 플래그가 지정되어야 함)로 가정되지 않음을 알 수 있습니다. – brazorf