afterAdd привязка не работает - PullRequest
2 голосов
/ 25 июня 2011

Я пытался использовать привязку afterAdd для добавления некоторой тривиальной анимации к элементам, добавляемым в мой observableArray, но он ничего не вызывает.

Я подумал, что у меня проблема с кодом анимации, поэтому я запрограммировал небольшое оповещение о функции, но все равно не работает.

Вот пример кода для шаблона div:

<div id="resultList" 
     data-bind='template: { name: "searchResultTemplate", 
                            afterAdd: function(elem){alert(elem)} }' 
     runat="server">
</div>

Это шаблон:

<script type="text/html" id="searchResultTemplate">{{each(i, searchresult) resultCollection()}}
<div class="searchresultwrapper ui-corner-all ui-state-default">
    <div class="searchresult">
        <img src='${ ImageUrl }' alt='${ Title }' title='${ Title }' class="searchresultpicture" />
        <div class="searchresultinformationcontainer">
            <span class="searchresulttitle" data-bind="text: Title"></span>
            <br />
            <div class="searchresultdescription" data-bind="text: Description">                   
            </div>
            <span class="searchresultAuthor" data-bind="text: AuthorName"></span> at <span class="searchresultmodule" data-bind="text: ModuleName"></span> on <span class="searchresultdate" data-bind="text: PublicationDate"></span>
            <br />
            <a href='${ Url }' class="searchresultlink">Take me there</a>
        </div>
    </div>
</div>
<br />{{/each}}
</script>

Есть идеи?

1 Ответ

4 голосов
/ 26 июня 2011

Вы должны квалифицировать атрибуты шаблона с foreach, например, так:

<div id="resultList" data-bind='template: { 
                           name: "searchResultTemplate", 
                           foreach: searchresult,
                           beforeRemove: function(elem) { $(elem).slideUp() },
                           afterAdd: function(elem) { $(elem).hide().slideDown() } 
                           }'  runat="server">
        </div>

и затем не используйте {{каждый в шаблоне, просто шаблонируйте его для каждого отдельного элемента.

Здесь атрибут foreach помогает отслеживать изменения в массиве объектов

...