0

我已经开始学习 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' 路由。

但是,因为我不喜欢页面 URL 中的井号,我希望它被删除并且这样做指南说我们应该放置以下代码:

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

但是当我这样做时,我在 Chrome 控制台中收到一条错误消息:“断言失败:URL '/EmberjsTest.aspx' 确实与您的应用程序中的任何路由匹配”

我究竟做错了什么?

提前致谢

4

1 回答 1

1

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

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

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

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

请注意,如果您使用选项 2,您可能必须更新所有路线以包含'/EmberjsTest.aspx'在他们path的 s.

this.resource("posts", {path: "/EmberjsTest.aspx/posts" })
于 2013-09-26T22:08:49.477 回答