在我的表单中,列表是由淘汰赛“填充”的。这是ul代码:

<ul class="sortable ui-widget-content" data-bind="foreach: menus">
   <li>
      <a href="#" data-bind="attr: { title: name }, click: $parent.navigate">
         <i data-bind="attr: { class: iconClass }"></i>
             <span data-bind="text: title"></span>
       </a>
   </li>
</ul>


而且效果很好。我现在需要的是foreach完成后,运行一段代码。关于如何实施的任何想法?

最佳答案

来自Knockout Documentation :(请参阅afterRender,注释7)


  如果您需要在生成的DOM上运行其他自定义逻辑
  元素,您可以使用任何
  afterRender/afterAdd/beforeRemove/beforeMove/afterMove回调


<ul data-bind="foreach: { data: myItems, afterAdd: yellowFadeIn }">
    <li data-bind="text: $data"></li>
</ul>

<button data-bind="click: addItem">Add</button>

<script type="text/javascript">
    ko.applyBindings({
        myItems: ko.observableArray([ 'A', 'B', 'C' ]),
        yellowFadeIn: function(element, index, data) {
            $(element).filter("li")
                      .animate({ backgroundColor: 'yellow' }, 200)
                      .animate({ backgroundColor: 'white' }, 800);
        },
        addItem: function() { this.myItems.push('New item'); }
    });
</script>


你看起来像这样吗?

编辑:在这种情况下afterRender应该没问题

07-25 21:55