나는 관찰 가능한 배열에 ul
에 바인딩 된 항목이 있습니다. 아이템이 추가 된 후에 전체 li
세트의 전체 너비를 계산해야합니다. 따라서 ul
요소의 너비를 자식의 전체 너비 인 li
요소로 설정할 수 있습니다.foreach가 렌더링을 완료했을 때의 사용자 지정 바인딩
foreach
바인딩을 사용하면 어떻게해야합니까?
<div>
<h2 data-bind="visible: items().length">Test</h2>
<ul data-bind="foreach: { data: items, afterAdd: $root.myAfterAdd }">
<li data-bind="text: name"></li>
</ul>
</div>
그리고 자바 스크립트 :
var viewModel = {
items: ko.observableArray([
{ name: "one" },
{ name: "two" },
{ name: "three" }
]),
myAfterAdd: function(element) {
if (element.nodeType === 1) {
alert("myAfterAdd");
}
},
addItem: function() {
this.items.push({ name: 'new' });
}
};
ko.applyBindings(viewModel);
// once foreach has finished rendering I have to set the width
// of the ul to be the total width of the children!
나는 내가 '갱신'각 요소가 추가 된 후 ul
의 폭, 불행하게도 나는 afterAdd
가에 대한 발생하지 않는 것을 발견 할 수 afterAdd
를 사용하여 시도 초기 항목! 추가 항목 ... li
항목 내부의 내용을 알 수없는 폭 될 것
참고 :
은 샘플 시나리오에 대해 this fiddle를 참조 밀어 경우에만 실행됩니다.
'afterRender'는 원하는 것을 수행하고 초기 렌더링 후에 실행됩니다. – Tyrsius
'afterRender' 문제는 DOM 요소가 완전히 초기화되기 전에 호출된다는 것입니다 (예 : li item). 잘못된 값이 나옵니다. – Umair
한 쪽 메모에 나는 호기심이 많다. * 왜 * 당신이 이것을하고 싶습니까? – Jeroen