【问题标题】:emberjs direct access to resource not workingemberjs直接访问资源不起作用
【发布时间】:2014-10-27 09:18:21
【问题描述】:

我有 2 条路线 - 会话和会话(因为我想在 2 个不同的页面中展示它们)

App.Router.map(function () {

    this.route("sessions", { path: "/sessions" });
    this.route("session", { path: "/sessions/:session_id" });
}

当我转到:#/sessions - 我得到了一张我画的漂亮桌子,当我点击我创建的链接时 在车把视图中:

{{#each model}}
<tr>
     <td>{{#link-to 'session' this}}{{this.id}}{{/link-to}}</td>
</tr>

它有效 - 会话的单独把手被绘制

当我直接转到#/sessions/4 时出现错误:

Assertion Failed: You may not pass "undefined" as id to the store's find method

路线:

App.SessionsRoute = Ember.Route.extend({
    model: function() {
        return this.store.find('session');
    }
});
App.SessionRoute = Ember.Route.extend({
    model: function(params) {
        return this.get('store').find('session', params.session_id);
    }
});

【问题讨论】:

  • 你能console.log你的参数吗?看起来这应该可行。
  • 我试过了......它根本没有打印出来(也许这就是问题?)
  • 是的,您确定您在路由器中使用hash 吗?也许它只是 localhost/sessions/4 使用 history
  • 是的...我什至点击地址栏上的“Enter”(只需刷新它)
  • 可能只需要this.resource 而不是this.route

标签: ember.js routes


【解决方案1】:

要使dynamic segments 起作用,您需要在声明路线时使用this.resource

App.Router.map(function () {
    this.route("sessions", { path: "/sessions" });
    this.resource("session", { path: "/sessions/:session_id" });
}

【讨论】:

  • 没有帮助。附加信息错误发生后:转换#0:会话:调用反序列化钩子ember.js:3911处理路由时出错:会话断言失败:您可能无法将undefined作为ID传递给商店的查找方法错误:断言失败:您不能将 undefined 作为 id 传递给 store 的 find 方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-08
  • 2020-05-03
  • 2022-08-16
  • 1970-01-01
相关资源
最近更新 更多