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 после публикации этого, но это действительно решило его проблему.