我的目标是编写一些可重用的代码来呈现基本的导航栏,因为这将是一项非常重复的任务。以下功能是我的第一个目标:
- 每个页面都应该在 foreach 绑定中呈现
- 每个页面都应该抓取读取当前路由的活动状态
- 每个页面都应该异步或内联加载
这是我的第一次尝试。我希望标记是这样的
<ul data-bind='foreach: pages'>
<li>
<!--
[1]
Here a toggler is needed for active/no-active status,
i.e. a class binding.
-->
<a data-bind='html: caption, click: $data.load'></a>
</li>
</ul>
每个页面项目应该看起来像这样
function PageItem(id, caption) {
this.id= id;
this.caption = caption;
this.page = pager.page.find(id);
this.load = function() {
// [2]
// Code here to trigger page load,
// i.e. this.page.async(someCallback, this.id);
}
this.active = function() {
// [3]
return this.page.isVisible();
}
}
使用目标:
function VM() {
var self = this;
self.pages = [];
self.pages.push(new PageItem('dashboard', "<i class='fa-icon-home'></i>"));
self.pages.push(new PageItem('offerJoin', 'Offer'));
}
var vm = new VM();
pager.extendWithPage(vm)
ko.applyBindings(vm);
pager.start('dashboard');
我需要有关 [1]、[2] 和 [3] 主题的帮助。任何指针?