我使用Knockout.js通过foreach绑定创建项目列表。当呈现foreach绑定的所有项目时,我想搜索一个名为“focused”的特定类的项目,并将窗口滚动到该项目。
这只会在页面加载时发生一次,因为我不添加或删除项目。
我该怎么做?
答案 0 :(得分:1)
您可以使用foreach绑定的属性afterRender。
<div data-bind="foreach: { data: items, afterRender: doSomething }">
<div data-bind="text: $data">
</div>
您的viewModel:
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;
}
}
};