2013-06-17 2 views
0

У меня проблема с производительностью с использованием анимации с нокаутом. Вот мой код:условная анимация нокаута в зависимости от длины родительского списка

<ul data-bind="template: {foreach: items, beforeRemove: slideup }"> 
    <li data-bind="text: text"></li> 
</ul> 
<script> 
    var slideup = function (elem) { 
    if (elem.nodeType === 1) $(elem).slideUp(100, function() {$(this).remove();}); 
    } 
</script> 

Проблема возникает, когда я RemoveAll в список с сотнями элементов. В этом случае я предпочел бы сделать обгон. Знаете ли вы, может ли я иметь доступ к длине списка в функции slideUp или если вы можете условно связать анимацию?

Благодаря

+0

Взгляните на [этой странице документации] (http://knockoutjs.com/examples/animatedTransitions.html). Похоже, что вы можете делать то, что хотите, используя пользовательскую функцию «update». – bdesham

ответ

0

Это должно работать:

var slideup = function (elem) { 
    var context = ko.contextFor(elem); 
    if (elem.nodeType === 1) { 
     if (context.$parent.length < 100) { 
      $(elem).slideUp(100, function() {$(this).remove();}); 
     } 
     else { 
      $(elem).remove(); 
     } 
    } 
} 
Смежные вопросы