【问题标题】:KnockoutJS not applying beforeRemove and afterAdd on nested templatesKnockoutJS 未在嵌套模板上应用 beforeRemove 和 afterAdd
【发布时间】:2011-09-15 06:42:41
【问题描述】:

我一直在用 knockoutjs 构建一个嵌套查询编辑器,并在 foreach 模式下使用模板上的 beforeRemove 和 afterAdd 选项为其添加动画。它在第一级嵌套上工作得很好,但在操作子过滤器组中的过滤器时就不行了。

是我做错了什么,还是这是 KnockoutJS 中的错误?嵌套模板不支持 afterAdd 和 beforeRemove 吗?如果是这样,是否有解决方法?

这里是my jsfiddle of the problem

另外,有没有办法根据添加/删除的内容更改动画行为?我希望有不同的动画来添加/删除过滤器组,然后添加/删除过滤器本身。

【问题讨论】:

    标签: knockout.js


    【解决方案1】:

    我自己想出了问题的第二部分。为了任何可能从谷歌登陆这里的人的利益:

    我将 afterAdd 和 beforeRemove 函数切换为显式声明(并在标记之外),然后使用 jQuery 对 elem 元素进行一些检查,以确定它是过滤器还是过滤器组,并适当地应用不同的动画。

    这里是final fiddle

    【讨论】:

      【解决方案2】:

      您遇到了post 中描述的问题。基本上,您的内部模板取决于 $data.filters 并最终在添加项目时重新呈现整个模板。因此,您的动画没有发生,因为整个列表每次都从头开始重新渲染。

      这是在模板中进行了少量重构以将“if”逻辑推入模板绑定的示例:http://jsfiddle.net/rniemeyer/UkGTF/

      此外,如果您开始将 1.3beta 与本机模板一起使用,则可以使用 ifwithforeach 控制流绑定来进一步简化此操作。

      【讨论】:

      • 因为这行得通,你启发了我重新审视不同组件的单独动画,并且这样做了successfully,虽然有点不雅
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      • 2013-07-19
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-24
      相关资源
      最近更新 更多