【问题标题】:Ember Route only working on manual refreshEmber Route 仅适用于手动刷新
【发布时间】:2013-04-12 20:56:54
【问题描述】:

我是 ember 的新手,我想让 Route 使用字符串而不是 id 来获得更漂亮的 url。当我手动输入路径 example.com/#/Commune 时,这里的路由器代码正在工作。但是当使用 {{#linkTo "commune" name}}{{name}}{{/linkTo}} 时,url 会正确更改,但没有显示任何内容(如果我刷新浏览器则会显示)。有什么想法吗?

JS:

App.Router.map(function() {
    this.route('commune', {path: "/:commune_name"});
});

App.CommuneRoute = Em.Route.extend({
    model: function(params) {
        return App.CommunesController.findProperty('name', params.commune_name);
    }
});

如果我这样做:情况正好相反。 (链接有效,但输入/刷新 aint)

App.CommuneRoute = Em.Route.extend({
    model: function(params) {
        return App.Commune.find(params.commune_name);
    }
});

【问题讨论】:

  • 您是否已经检查过点击链接后是否进入了正确的控制器以及params.commune_name 是否设置正确?另外,CommuneRoute 真的是你唯一的路线吗? (只是想知道CommunesController。)
  • 在刷新/进入时转换为“公社”,然后单击链接
  • 如果我这样做:App.Router.map(function() { this.route('commune', {path: "/:commune_id"}); }); App.CommuneRoute = Em.Route.extend({ model: function(params) { return App.Commune.find(params.commune_id); } }); 反过来,现在点赞正在起作用,但在输入/刷新时它会崩溃
  • 嗯,如果你在旧路由器的CommuneRoute 中使用return App.Commune.find({name: params.commune_name});(或者return App.Commune.find({'name': params.commune_name});)?
  • 它们都只适用于链接,而不适用于输入/刷新:/

标签: javascript ember.js routes ember-router


【解决方案1】:

需要在我的路由中添加序列化:

App.CommuneRoute = Em.Route.extend({
    serialize: function(model, params) {
        return {
            name: model._data.attributes.name
        };
    },
    model: function(params) {
        return App.CommunesController.findProperty('name', params.commune_name);
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多