我是一個初學者試圖瞭解SPA /迪朗達爾,淘汰賽等..迪朗達爾2.0「路線」
需要一些幫助,我的路線爲聯繫下拉按鈕。
這裏是我的路線在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 }];
我還創建了adminRoutes在shell.js綁定到與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; }));
然而,當我在「鉻控制檯」運行此:
var router = require('plugins/router')
router.routes.filter(function (r) { return r; })
我得到的陣列回來,所以我不知道爲什麼在代碼中這是行不通的。
在這裏檢查一個答案,應該可以幫助你 - http://stackoverflow.com/questions/17665615/how-to-use-dropdowns-for-durandal-navigation/17666712#17666712 –
看起來像過濾器不因爲它使用'r.setting.admin'進行測試,但是'settings'沒有在每個配置中定義。如果您擺脫了設置對象,例如只需使用'admin:true'即可。 – RainerAtSpirit
@RainerAtSpirit如果我的理解是正確的,如果將我的路由從'settings:{admin:true}'更改爲'admin:true',並按'r.admin'過濾,我仍然得到一個0數組。 –