我已经开始学习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'确实匹配了应用中的所有路线'
我做错了什么?
提前致谢
答案 0 :(得分:1)
如果您想使用历史记录API,那么您有两种选择。
从'/'
提供您的Ember应用程序,以便Ember可以使用它的“正常”索引/根路径。
在您的Ember应用中创建一个可以处理'/EmberjsTest.aspx'
的路线。
this.route("index", { path: "/EmberjsTest.aspx" });
请注意,如果您使用选项2,则可能需要更新所有路由,以便在其'/EmberjsTest.aspx'
中添加path
。
this.resource("posts", {path: "/EmberjsTest.aspx/posts" })