我有一个可观察的数组,其中的项目绑定到ul
. 添加项目后,我需要计算整个li
项目集的宽度,以便我可以将ul
元素的宽度设置为子元素的总宽度li
。
我怎样才能通过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>
和 JavaScript:
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!
我尝试使用afterAdd
,以便ul
在添加每个元素后“更新”宽度,不幸的是我发现afterAdd
初始项目不会触发!它只会在推动其他物品时触发......
请注意,项目内的内容li
将是未知宽度:)
请参阅此小提琴以获取示例场景。