2016-03-07 2 views
0

Я новичок в области контентного и углового (работает в ионике) и с некоторым трудом разбираюсь в том, как правильно извлекать полевые данные из связанного с содержанием контента контента (ака «Ссылка»,).Получение связанных полей ввода в контентных с угловыми (Ionic)

Как бы то ни было, я могу перечислить свои записи в соответствии с фабрикой «Условия» и перейти в отдельное состояние записи, в котором я могу перечислить связанный контент, - очевидно, как вы видите здесь - только идентификатор ,

Я чувствую, что это можно решить на фабрике /, но просто не совсем уверен, как действовать. До сих пор ничего не пробовал. И, если это так, что я все это делаю неправильно, я рад, что мне сказали об этом.

Большое спасибо заранее.

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); 
    }) 

}); 

шаблоны/Термин-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> 

ответ

0

Вам не нужно делать все это вручную, если у вас нет особого варианта использования. Вы можете использовать официальный Contentful JS SDK или третью сторону интеграции Angular JS Contentful. Оба они имеют дело с разрешением ссылки автоматически. Вы можете увидеть больше информации о ссылках здесь https://www.contentful.com/developers/docs/concepts/links/ и здесь https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/links

Надежда, что помогает :)

+0

Спасибо за рекомендации ресурсов. Поскольку я новичок в Angular, я думал, что дам ему попробовать, но JS SDK делает вещи намного проще. Мне до сих пор трудно понять, как связать связанные с ними объекты, чтобы получить их поля при доступе к одной записи (через «client.getEntry»). Ясно, что все еще есть чтение. :) –