2

私は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; })

配列を元に戻すので、コードで機能しない理由がわかりません。

4

2 に答える 2