我正在构建一个应用程序,并从Knockout开始。我们已经到了需要实现分页的地步了,看起来在Knockout中实现分页的实际库是Pager.js。
Pager很好用,而且非常容易使用,但我们有一个用例,我还没有想出Pager的解决方案。
在我们的许多页面中,我们希望能够在页面上的多个不相交的元素中显示某些内容。(不知道“不相交”是否是恰当的术语;真正的意思是那些完全不相连的元素,比如在DOM树的完全独立的分支中。)例如,我们可能想要在页眉、页脚或菜单中显示某些内容,以及Pager将呈现的主UI。
到目前为止,Pager似乎只将一个页面链接到一个元素,这就是它根据哪个页面处于活动状态而显示/隐藏的元素。
有没有办法让Pager显示/隐藏多个不相交的元素?我必须依靠像回调这样的东西来完成这件事吗?(我知道当Pager显示/隐藏页面时有一些回调,我认为这些回调可以用来实现这一点,但如果Pager为我处理这一点会更好。)
如果Pager并不真正支持这种用例,有没有其他类似的库可以尝试与Knockout兼容?或者,会有另一个完全支持这一点的Knockout的替代方案(AngularJS,Ember等)吗?
编辑:看着Ember,我正在寻找的是什么是described here and their "outlets" features (页面上的最后一个例子)。所以,我正在寻找与Knockout类似的功能。我确实认为我可以使用一些Knockout回调来模仿这一点,但它可能会涉及到大量的jQuery来移动或隐藏/显示东西。我宁愿不这样做,因为随着时间的推移和应用程序变得越来越大,这将成为更令人头疼的维护问题。
发布于 2014-05-24 11:25:07
是的,而且它很容易实现。阅读http://knockoutjs.com/documentation/binding-context.html
基本上,您只需使用$parent、$parents[x]或最终使用$root来访问不在用作上下文的对象级别上的可观察对象。
下面是一个示例(是否使用pager.js并不会改变它的工作方式):
var viewModel = {
user: {
id: ko.observable(1),
name: ko.observable('John')
}
menu: {
links: {
about: 'about.html',
index: 'index.html'
}
}
};WIth此HTML:
<div id="header">
<p>Your name is <span data-bind="text: user.name"></span></p>
</div>
<div id="menu" data-bind="with: menu">
<p>Your name is still <span data-bind="text: $parent.user.name"></span></p>
<p>Your name is still <span data-bind="text: $parents[0].user.name"></span></p>
<p>Your name is still <span data-bind="text: $root.user.name"></span></p>
</div>https://stackoverflow.com/questions/23835000
复制相似问题