【问题标题】:Ember dynamic segment with parameters带参数的 Ember 动态段
【发布时间】:2014-10-14 23:48:05
【问题描述】:

我有一个像这样的动态分段路由 -

@resource 'owners', { path: "/:owner_id"}
@resource 'product', { path: "products/:product_id" }

产品路线需要来自该路线的信息,并且需要在某些产品参数加载后加载

Market.ProductRoute = Ember.Route.extend({
    model: function(params) {
        return this.store.find('product', params.product_id);
    },
    afterModel: function(model){
        this.store.find('owner', model.get('id'), { 'owner_type':model.get('owner_type')});
    },
});

我收到以下错误:

处理路由时出错:产品断言失败:metaForProperty() 找不到键为“owner_type”的计算属性。错误:断言失败:metaForProperty() 找不到键为“owner_type”的计算属性

错误:传递的上下文对象多于路由的动态段:错误

未捕获的错误:断言失败:错误:传递的上下文对象多于路由的动态段:错误

【问题讨论】:

    标签: ember.js routes ember-data


    【解决方案1】:

    查看您的代码,我认为您的意图是在加载产品后加载关联的所有者。我还假设您希望将产品 idowner_type 发送到您的服务器,因为这是一种多态关系。

    您收到有关 owner_type 错误的错误,因为您传递了一些非常奇怪的东西作为查找 which is reserved for indicating data and relationships that you know are already preloaded 的第三个参数 - 可能不是您想要的。我不禁注意到 CoffeeScript 和 JavaScript 的混合。这让我觉得你误解了 find 的工作原理,因为你习惯于让 CoffeeScript 将传递给函数的所有键值对收集到一个对象字面量中。

    第二个错误More context objects were passed... 可能是因为您有一个链接,当您的路由器路径中没有动态段(或没有足够的动态段)时,您将对象传递给{{link-to}} 助手。仅从发布的代码很难看出这一点。

    以下是我认为您希望在产品路线中做的事情:

    Market.ProductRoute = Ember.Route.extend({
      model: function(params) {
        return this.store.find('product', params.product_id);
      },
    
      afterModel: function(model) {
        this.store.find('owner', {
          owner_id: model.get('id'),
          owner_type: model.get('owner_type')
        });
      },
    });
    

    如果您可以控制自己的 API,那么在搜索产品时只包含所有者可能会很好。我有一些应用程序,有时我想要关联,有时我不想要。我经常会得到如下所示的路线:

    Market.ProductRoute = Ember.Route.extend({
      model: function(params) {
        return this.store.find('product', {id: params.product_id, include: ['owner']});
      }
    });
    

    此时,您的服务器将使用此 {include: 'owner'} 数据表示它还应将所有者作为侧加载数据返回。

    希望里面有帮助!

    【讨论】:

    • 太好了,谢谢!问题与多态关系有关,我不知道 ember 数据支持它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多