ember-data-url-templates - 如何在Ember 3中使用快照API

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ember-data-url-templates - 如何在Ember 3中使用快照API相关的知识,希望对你有一定的参考价值。

在附加组件wi-ki中,我们可以使用belongsTo来发现模型之间的关系:

urlSegments: {
    postId: function(type, id, snapshot, query) {
      return snapshot.belongsTo('post', { id: true });
    },
  },

但我在Ember 3 API文档中找不到更多内容。怎么做 ?更多,我收到错误:

Uncaught TypeError: snapshot.belongsTo is not a function
    at Class.shopId (shop-language.js:13)
    at url-templates.js:39
    at subFunction (uri-templates.js:103)

在适配器中使用它时:

#adapters/shop-language.js
import ApplicationAdapter from './application';
import UrlTemplates from "ember-data-url-templates";

export default ApplicationAdapter.extend(UrlTemplates, {
  findAllUrlTemplate: '/shops/{shopId}/languages',
  createRecordUrlTemplate: '/shops/{shopId}/languages',

  urlSegments: {
    shopId: function(type, id, snapshot, query) {
      return snapshot.belongsTo('shop', { id: true });
    },
  },
});
答案

我想出了如何使用它与description belongsToshop模型。这是description.js适配器:

import ApplicationAdapter from './application';
import UrlTemplates from "ember-data-url-templates";

export default ApplicationAdapter.extend(UrlTemplates, {
  urlTemplate: '{+host}/shops/{shopId}/descriptions',
  findAllUrlTemplate: '{+host}/shops/{shopId}/descriptions',
  createRecordUrlTemplate: '{+host}/shops/{shopId}/descriptions',
  updateRecordUrlTemplate: '{+host}/shops/{shopId}/descriptions/{id}',

  urlSegments: {
    shopId: function(type, id, snapshot, query) {
      if (query && query.shop_identifier) {
        return query.shop_identifier;
      }
      return snapshot.belongsTo('shop').attr('identifier');
    },

    id: function(type, id, snapshot) {
      return snapshot.id;
    }
  }
});

在上面的例子中,我使用另一个商店属性 - identifier,但你可以通过商店的id来代替。希望这可以帮助。

以上是关于ember-data-url-templates - 如何在Ember 3中使用快照API的主要内容,如果未能解决你的问题,请参考以下文章