AngularJ, использующие разрешение в $state с помощью ui-router

Привет я пытаюсь получить пример приложения и работает, и я не могу заставить его загрузить представление... вот полный app.js, однако я думаю, что ошибка находится в объекте разрешения... любая помощь или руководство будут оценены... спасибо за поиск

вот ссылка на GitHub для проекта.... я буду менять ключ API после того, как эта проблема будет решена

https://github.com/ChrisG000/stamplayEbayClassified

angular.module('starter', ['ionic', 'starter.controllers','starter.services', 'starter.templatesComponent', 'ngCordova'])
.run(function($ionicPlatform, $cordovaStatusbar) {
  $ionicPlatform.ready(function() {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)

if(window.cordova && window.cordova.plugins.Keyboard) {
  cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if(window.StatusBar) {
  // org.apache.cordova.statusbar required
  $cordovaStatusbar.styleColor('white');
  //StatusBar.styleDefault();
}
});
})
.constant('APPID', '')
.constant('APIKEY','')
.constant('BASEURL', '') 
.config(function($stateProvider, $urlRouterProvider) {

$stateProvider
// setup an abstract state for the tabs directive
.state('tab', {
  abstract: true,
  templateUrl: "templates/tabs.html",
  resolve: {
    category: function (Category) {
      return Category.getPromise();
    },
    areas : function(Area){
      return Area.getPromise();
    },
    items : function(Item){
      return Item.getPromise();
    }
  },
})

// Each tab has its own nav history stack:

.state('tab.item', {
  url: '/item',
  views: {
    'tab-item': {
      templateUrl: 'templates/tab-item.html',
      controller: 'FindCtrl'
    }
  },
})

.state('tab.item-view', {
  url: '/item/:itemId',
  views: {
    'tab-item': {
      templateUrl: 'templates/item-view.html',
      controller: 'ItemCtrl'
    }
  }
})
.state('tab.publish', {
  url: '/publish',
  views: {
    'tab-publish': {
      templateUrl: 'templates/tab-publish.html',
      controller: 'PublishCtrl'
    }
  }
})

.state('tab.account', {
  url: '/account',
  views: {
    'tab-account': {
      templateUrl: 'templates/tab-account.html',
      controller: 'AccountCtrl'
    }
  }
})

.state('tab.settings', {
  url: '/settings',
  views: {
    'tab-settings': {
      templateUrl: 'templates/tab-settings.html',
      controller: 'SettingsCtrl'
    }
  }
})

.state('tab.login', {
  url: '/settings/login',
  views: {
    'tab-settings': {
      templateUrl: 'templates/login-view.html',
      controller: 'LoginCtrl'
    }
  }
})

.state('tab.signup', {
  url: '/settings/signup',
  views: {
    'tab-settings': {
      templateUrl: 'templates/signup-view.html',
      controller: 'LoginCtrl'
    }
  }
})

.state('tab.contact', {
  url: '/settings/contact',
  views: {
    'tab-settings': {
      templateUrl: 'templates/contact-view.html',
      controller: 'SettingsCtrl'
    }
  }
})

.state('tab.terms', {
  url: '/settings/terms',
  views: {
    'tab-settings': {
      templateUrl: 'templates/terms-view.html',
      controller: 'SettingsCtrl'
    }
  }
})

  // if none of the above states are matched, use this as the fallback
  $urlRouterProvider.otherwise('/item');
});

1 ответ

Хорошо, вот как вы могли бы диагностировать что-то вроде этого. Во-первых, вы хотите избежать петли, потому что это очень трудно понять, что происходит. Поскольку проблема возникает на маршруте по умолчанию, решение состоит в том, чтобы временно изменить маршрут по умолчанию на что-то другое. Затем вы перейдете к localhost:8100/#/item вручную. В этом сценарии вы избежите петли и сможете заглянуть в Chrome DevTools, чтобы увидеть, что происходит, без бесконечного цикла, который блокирует DevTools.

Сначала измените файл app.js, чтобы он включал следующий простой маршрут:

.state('testing', {
  url: '/testing',
  template: '<h1>Testing</h1>'
})

Также в app.js (строка 143) измените маршрут по умолчанию, чтобы перейти к нашему простому маршруту:

$urlRouterProvider.otherwise('/testing');

Теперь, в вашем браузере, зайдите на http://localhost:8100/ напрямую, когда у вас открыт DevTools. Прежде чем нажать Enter, убедитесь, что вы настроили вкладки Network и Console, настроенные на "Сохранить журнал" (это флажок). Таким образом, даже если вы будете перенаправлены в / testing из-за ошибки, вы на самом деле сможете увидеть ошибку в консоли DevTools.

В вашем случае это ошибка 404 в запросе OPTIONS, который отправляется по http://localfood.stamplay.com/api/cobject/v0/category. Вы можете прочитать о CORS и ionic здесь: http://blog.ionic.io/handling-cors-issues-in-ionic/

Кроме того, когда я пытаюсь зайти на http://localfood.stamplay.com/api/cobject/v0/category напрямую, меня встречает ошибка слишком большого количества перенаправлений в моем браузере, что означает, что что-то не правильно настроено на сервере API, Сервер должен ответить некоторой ошибкой в ​​/ error, но вместо этого он продолжает перенаправлять на себя.

Итог, это похоже на проблему конфигурации сервера.

Изменить: При использовании обновленного URL http://localfood.stamplayapp.com/api/cobject/v0/category я получаю 403 Запрещено, поэтому я предполагаю, что OP изменил ключ api после публикации этого, но это действительно решило его проблему.

Другие вопросы по тегам