我正在使用flatiron/director进行客户端路由。
我有这样的路线:
var routes = {
'': function() { loadLandingPage(); },
'/author': function() { author(); }
};
如果我访问www.example.com#/author,它会触发作者功能。如果我访问 www.example.com# 或 www.example.com#/,则会加载我的目标网页。
但是,我想为我的网站的根目录定义一个不带 # 的默认路由。我希望即使我们登陆 www.example.com 时没有 # 也能加载登陆页面。
我已经浏览了文档,但我怎么也搞不懂。我以为configuration: notfound方法会做我的想法,但它什么也没做。我尝试了以下方法:
var router = Router(routes).configure({ notfound: loadGlobalPage});
和
var router = Router(routes).configure({ notfound: function () {loadGlobalPage();} });
并且在阅读this thread之后,我尝试过:
router.notfound = function() {
loadGlobalPage();
};
我还尝试了与路由器无关的黑客:
function determineIfLandingPage() {
if (window.location.hash == "") {
loadGlobalPage();
window.location.href += "#"
}
}
这可行,但感觉就像是黑客攻击。
这一定是一个比较常见的用例 - 我如何从路由器获得所需的功能?
最佳答案
来自文档:redirect method将解决这个问题。
route.init(['/'])
如果在以下位置找不到 '/#/'
将重定向到路由 /
网址。
关于javascript - 使用director.js,如何为没有# hash 的站点根目录定义默认路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35191710/