我是一名初学者,正在尝试学习 SPA / Durandal、Knockout 等...
在我的路线上需要一些帮助以获取管理员下拉按钮。
到目前为止,这是我在shell.js中的路线:
var routes = [
{ route: '', moduleId: 'home', title: 'Home', nav: 1 },
{ route: 'downtime', moduleId: 'downtime', title: 'Downtime', nav: 2 },
{ route: 'downtimeadd', moduleId: 'downtimeadd', title: 'Add A New Downtime', nav: false, settings: { admin: true } },
{ route: 'production', moduleId: 'production', title: 'Production', nav: 4 }];
我还在shell.js中创建了adminRoutes以使用 KO 绑定到视图:
var adminRoutes = ko.computed(function () {
return router.routes.filter(function (r) {
return r.settings.admin;
});
});
根据研究,他们说router.routes是一个数组,但是当我将它绑定到我的视图时,按钮显示 0 个下拉项目。
当我这样做时(如下),我可以获得所有路线,但我只需要管理路线......
var adminRoutes = ko.computed(function () {
return router.routes;
});
我应该如何进行?似乎router.routes实际上不是一个数组?如果我尝试将其打印到控制台:
console.log(router.routes[0]); //Chrome says its undefined...
console.log(router.routes); //Shows array of size 4...
是的,不知道...帮助将不胜感激!
更新: ------------------------------------------------ ------------------
即使在 RainerAtSpirit 的建议之后,当我过滤代码时,我仍然会得到一个空数组。
var router = require('plugins/router');
//Array size 4
console.log(router.routes);
//Array size 0
console.log(router.routes.filter(function (r) { return r; }));
但是,当我在“ chrome 控制台”中运行它时:
var router = require('plugins/router')
router.routes.filter(function (r) { return r; })
我确实得到了数组,所以我不知道为什么在代码中它不起作用。