如何使用Knockoutjs呈现foreach时调用方法

时间:2013-02-17 07:06:12

标签: javascript binding knockout.js foreach

我使用Knockout.js通过foreach绑定创建项目列表。当呈现foreach绑定的所有项目时,我想搜索一个名为“focused”的特定类的项目,并将窗口滚动到该项目。

这只会在页面加载时发生一次,因为我不添加或删除项目。

我该怎么做?

1 个答案:

答案 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;
       }
   }
};