Knockoutjs - 动态模板切换之间的转换?

时间:2012-05-28 18:08:20

标签: javascript html knockout.js

KnockoutJS到目前为止一直非常棒,但我是框架的新手。我正在尝试创建一个标签式界面,例如4个链接和一个共同的显示区域。单击链接可以利用Knockout的模板系统并切换模板。这一直很好用,但我想在模板切换之间添加一些动画。

我怎样才能做到这一点?我已经阅读了一些关于beforeRemove / afterAdd的内容,但这似乎只适用于observableArrays。我知道KnockoutJS支持动画/自定义绑定(我对我页面上的其他元素更直接地使用它们)。

如果我的整个方法不正确,是否有更好的方法来使用标签界面轻松获得过渡?

这是我现在的代码。

HTML:

<div class="Page">
    <span data-bind="template: {name: current_page()}"></span>
</div>
<script type="text/html" id="Home">
    <!-- Home content -->
</script>
<script type="text/html" id="Tab1">
    <!-- Tab1 content -->
</script>

Javascript(Knockout的ViewModel):

this.current_page  = ko.observable("Home")
//later on...
this.current_page("Tab1");

1 个答案:

答案 0 :(得分:9)

您可以使用template bindingafterRender属性:

<span data-bind="template: {name: current_page(), afterRender: animatePageChange }"></span> 

..然后在您的视图模型上,您可以添加您想要的任何动画:

animatePageChange: function() { $('#content').hide(); $('#content').fadeIn(3000); }

我在http://jsfiddle.net/unklefolk/v3JMS/1/

上放了一个简单的演示