0

私は Contentful と Angular (Ionic で作業) を初めて使用し、Contentful エントリの関連コンテンツ (別名「リンク」) からフィールド データを適切に取得する方法を整理するのに苦労しています。

現状では、「Terms」ファクトリに従ってエントリを一覧表示できます。また、リンクされたコンテンツを (ここでわかるように) id だけで一覧表示できる個別のエントリ状態に移行できます。

これは工場で解決できると思いますが、どうすればよいかわかりません。これまでに試したことは何もありません。そして、私がこれをすべて間違っているとしたら、そう言ってもらえるとうれしいです。

よろしくお願いします。

services.js

angular.module('app.services', ['ngResource'])

.factory('Terms', function ($resource, $log) {

  var apiGetEntries = 'https://cdn.contentful.com/spaces/SPACE_ID/entries?access_token=MY_ACCESS_TOKEN';

  var terms = $resource(apiGetEntries, null, {

    query: {
      method: 'GET',
      isArray: true,
      transformResponse: function(data, headers) {
        var entriesRaw = angular.fromJson(data);
        var entries = [];
        angular.forEach(entriesRaw.items, function(entry) {
          entries.push(entry);
        });
        console.log(entries);
        return entries;
      }
    }

  });

  return terms;

})

controllers.js

angular.module('app.controllers', [])

.controller('getTerms', function($scope, Terms) {

  $scope.terms = Terms.query();

})

.controller('getTermDetail', function($scope, $http, $stateParams) {

  var apiBasePath = 'https://cdn.contentful.com/spaces/SPACE_ID/entries/';
  var accessToken = 'MY_ACCESS_TOKEN';
  var termId      = $stateParams.termId;

  $http({
    url: apiBasePath + termId, 
    method: "GET",
    params: { access_token: accessToken }
  }).success(function(data, status, headers, config) {
      $scope.term = data;
      if(typeof $scope.term.fields.relatedTo != 'undefined') {
        $scope.relatedTerms = $scope.term.fields.relatedTo
      }
    }).error(function(data, status, headers, config) {
      console.log(data);
    })

});

templates/term-definition.html

<ion-view view-title="Definition">
  <ion-content class="padding">
    <h2>{{ term.fields.term }}</h2>
    <p>
      {{ term.fields.definition }}
    </p>
    <ion-list>
      <ion-item class="" ng-repeat="relatedTerm in relatedTerms" type="item-text-wrap" href="#/tab/terms/{{ relatedTerm.sys.id }}">
        {{ relatedTerm.sys.id }}
      </ion-item>
    </ion-list>
  </ion-content>
</ion-view>
4

1 に答える 1