afterAdd 绑定不起作用

发布于 2024-11-16 22:44:01 字数 1598 浏览 2 评论 0原文

我尝试使用 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>

有什么想法吗?

I tried to use the afterAdd binding to add some trivial animation to the elements being added to my observableArray but it does not trigger anything.

I tought I had a problem with my animation code so I coded a small alert on the function but still does not work.

Here's some sample code for the div being templated:

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

This is the template:

<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>

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

坦然微笑 2024-11-23 22:44:01

您需要像这样使用 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>

然后不要在模板中使用 {{each ,只需为每个单独的项目进行模板化。

在这里,foreach 属性有助于跟踪对象数组的更改

You need to qualify the template attributes with foreach like so,

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

and then, not use {{each in the template, just template it for each item stand alone.

Here, foreach attribute helps keep track of changes to the object array

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文