私はSPA /デュランダル、ノックアウトなどを学ぼうとしている初心者です...
管理者のドロップ ダウン ボタンのルートについて助けが必要です。
これまでの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 }];
KO でビューにバインドするために、shell.js でadminRoutesも作成しました。
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 console」で実行すると、次のようになります。
var router = require('plugins/router')
router.routes.filter(function (r) { return r; })
配列を元に戻すので、コードで機能しない理由がわかりません。