Контроллер не может загрузить данные Wordpress JSON

0

Кажется, я не могу заставить Wordpress JSON работать. Я совершенно новый для AngularJS и ионных миров, поэтому я читал и смотрел учебники.

Это app.js часть моего файла app.js:

(function() {

var app = angular.module('mybodyapp', ['ionic', 'angularMoment','LocalStorageModule']);

app.config(function($stateProvider, $urlRouterProvider) {
    $stateProvider.state('index', {
        url : '/',
        templateUrl : 'index.html',
        controller : 'MainController'
    });
    $stateProvider.state('list', {
        url: '/list',
        templateUrl: 'templates/list.html'
    });
    $stateProvider.state('edit', {
        url: '/edit/:noteId',
        templateUrl: 'templates/edit.html',
        controller: 'EditCtrl'
    });
    $stateProvider.state('add', {
        url: '/add',
        templateUrl: 'templates/edit.html',
        controller: 'AddCtrl'
    });
    $stateProvider.state('notes', {
        url: '/notes',
        templateUrl: 'templates/notes.html'
    });
    $stateProvider.state('posts', {
        url: '/posts',
        templateUrl: 'templates/posts.html',
        controller: 'PostsCtrl'
    });
    $urlRouterProvider.otherwise("/");
});

// ...

Я могу захватить данные из Reddit через контроллер, но не данные из Wordpress. Я нашел хороший демонстрационный шаблон, но не могу понять, как "переписать" начало JS-контроллера. Я удалил вершину исходного angular.module('starter.controllers', []) и поставил angular.module('mybodyapp') а затем:

.controller('AppCtrl', function($scope, $timeout, $rootScope) {
    $rootScope.url = 'http://scottbolinger.com/wp-json/wp/v2/';
})
.controller('PostsCtrl', function( $scope, $http, DataLoader, $timeout, $ionicSlideBoxDelegate, $rootScope ) {
    console.log('PostsCtrl');

    $scope.loadPosts = function() {
        DataLoader.get( $rootScope.url + 'posts' ).then(function(response) {
            $scope.posts = response.data;
            console.log( response.data );
        }, function(response) {
            console.log('error', response);
        });
    }

    // Load posts on page load
    $scope.loadPosts();

    paged = 2;
    $scope.moreItems = true;

    // Load more (infinite scroll)
    $scope.loadMore = function() {
        if( !$scope.moreItems ) {
            return;
        }

        var pg = paged++;

        $timeout(function() {
            DataLoader.get( $rootScope.url + 'posts' + '?page=' + pg ).then(function(response) {
                angular.forEach( response.data, function( value, key ) {
                    $scope.posts.push(value);
                });

                if( response.data.length <= 0 ) {
                    $scope.moreItems = false;
                }
            }, function(response) {
                $scope.moreItems = false;
                console.log('error');
            });

            $scope.$broadcast('scroll.infiniteScrollComplete');
            $scope.$broadcast('scroll.resize');
        }, 1000);
    }

    $scope.moreDataExists = function() {
        return $scope.moreItems;
    }

    // Pull to refresh
    $scope.doRefresh = function() {
        console.log('Refreshing!');

        $timeout( function() {
            $scope.loadPosts();

            //Stop the ion-refresher from spinning
            $scope.$broadcast('scroll.refreshComplete');
        }, 1000);
    };
})
.controller('PostCtrl', function($scope, $stateParams,     DataLoader,    $ionicLoading, $rootScope, $sce ) {
    $ionicLoading.show({
        noBackdrop: true
    });

    var singlePostApi = $rootScope.url + 'posts/' +    $stateParams.postId;

    DataLoader.get( singlePostApi ).then(function(response) {
        $scope.post = response.data;
        // Don't strip post html
        $scope.content =    $sce.trustAsHtml(response.data.content.rendered);
        $ionicLoading.hide();
    }, function(response) {
        console.log('error', response);
    });
  });
Теги:
ionic-framework

1 ответ

0

Имя в директиве ng-app должно соответствовать имени вашего модуля. Имя в директиве ng-controller должно соответствовать имени вашего контроллера.

Для получения дополнительной информации о директиве ng-app см. Ссылку API AngularJS ng-app.

Для ng-controller директивы, AngularJS нг-контроллер Справочное руководство по API

ОБНОВИТЬ

В демоверсии, которую вы захватили, есть три контроллера. Вам необходимо сделать их методами angular.module

angular.module('mybodyapp').controller('AppCtrl',... 

angular.module('mybodyapp').controller('PostsCtrl', function( $sc

angular.module("mybodyapp").controller('PostCtrl', function($scope
  • 0
    Извините, я забыл опубликовать свою измененную версию. Итак, в моем app.js у меня есть: (function () {var app = angular.module ('myreddit', ['ionic', 'angularMoment', 'LocalStorageModule']); за ним следуют некоторые поставщики состояний.
  • 0
    Затем в моем контроллере Wordpress (WPCtrl.js) у меня есть в начале: angular.module ('myreddit') .controller ('WordCtrl', функция ($ scope, $ timeout, $ rootScope) {$ rootScope.url = ' scottbolinger.com/wp-json/wp/v2 ';})
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню