【发布时间】:2013-02-17 07:06:11
【问题描述】:
我使用 Knockout.js 通过 foreach 绑定创建了一个项目列表。当 foreach 绑定的所有项目都呈现后,我想搜索一个名为“focused”的特定类的项目并将窗口滚动到该项目。
这只会在页面加载时发生一次,因为我不添加或删除项目。
我该怎么做?
【问题讨论】:
标签: javascript binding knockout.js foreach
我使用 Knockout.js 通过 foreach 绑定创建了一个项目列表。当 foreach 绑定的所有项目都呈现后,我想搜索一个名为“focused”的特定类的项目并将窗口滚动到该项目。
这只会在页面加载时发生一次,因为我不添加或删除项目。
我该怎么做?
【问题讨论】:
标签: javascript binding knockout.js foreach
你可以使用foreach绑定的属性afterRender。
<div data-bind="foreach: { data: items, afterRender: doSomething }">
<div data-bind="text: $data">
</div>
您的视图模型:
var vm = {
doSomethingInvoked: false,
items: ko.observableArray(['apple', 'banan']),
doSomething: function (elements) {
if (!doSomethingInvoked) { // prevent invoking multiple times
var offsetTop = $(elements).filter('.focus').offset().top;
$('html,body').scrollTop(offsetTop);
doSomethingInvoked = true;
}
}
};
【讨论】: