Ember.js在App.Route中指定location ='history'的URL类型时出错

时间:2013-09-26 10:56:25

标签: javascript ember.js

我已经开始学习ember.js框架了,我仍然坚持如何使用框架所具有的URL类型功能的设置。

http://emberjs.com/guides/routing/specifying-the-location-api/

我有这个简单的application.js

App = Ember.Application.create();

App.Router.reopen({
    location: 'history'
});

App.Router.map(function () {
    this.route('about');
});

App.ApplicationRoute = Ember.Route.extend({

    model: function () {
        return appdata;
    }
});

App.IndexRoute = Ember.Route.extend({
    setupController: function (controller) {
        // Set the IndexController's `title`
        controller.set('indextitle', "My Index title");
    },
    renderTemplate: function () {
        this.render({ outlet: 'indexoutlet' });
    }
});

App.AboutRoute = Ember.Route.extend({
    model: function () {
        return appdata;
    },
    renderTemplate: function () {
        this.render({ outlet: 'aboutoutlet' });
    }
});

var appdata = { mytext: '', theplaceholder: 'Enter new text', attr:'Yeap!' }

如果我不使用

App.Router.reopen({
    location: 'history'
});

应用程序正常工作,并通过附加URL'〜/ EmberjsTest.aspx#/ about'进入'about'路径。

但是因为我不喜欢页面网址中的哈希符号,所以我希望如果它被删除并且要做到这一点,指南说我们应该放这个代码:

App.Router.reopen({
    location: 'history'
});

但是当我这样做时,我在Chrome控制台中收到错误消息: '断言失败:网址'/EmberjsTest.aspx'确实匹配了应用中的所有路线'

我做错了什么?

提前致谢

1 个答案:

答案 0 :(得分:1)

如果您想使用历史记录API,那么您有两种选择。

  1. '/'提供您的Ember应用程序,以便Ember可以使用它的“正常”索引/根路径。

  2. 在您的Ember应用中创建一个可以处理'/EmberjsTest.aspx'的路线。

    this.route("index", { path: "/EmberjsTest.aspx" });

  3. 请注意,如果您使用选项2,则可能需要更新所有路由,以便在其'/EmberjsTest.aspx'中添加path

    this.resource("posts", {path: "/EmberjsTest.aspx/posts" })