javascript - 使用director.js,如何为没有# hash 的站点根目录定义默认路由?

标签 javascript routes client-side flatiron.js

我正在使用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/

相关文章:

php - CodeIgniter 路由文件夹错误

javascript - 使用浏览器 keystore 中的私钥进行基于浏览器的加密/解密

synchronization - 如何避免服务器端和客户端的重复验证?

java - XMPP Client(带smack)和ActiveMQ,如何拦截 "adminConsole"消息

javascript - 单击表头时对表中的行进行排序

javascript - 将参数传递到可观察数组中

php - CakePHP 从 URL 中删除索引操作

javascript - Aurelia:单例 View 中的静态自定义元素

javascript - 使用 Promise 和 'this' 上下文调用对象方法

ruby-on-rails - 如何在Rails中获取当前的URL路由模式?