#angularjs #ionic-framework
#angularjs #ионный фреймворк
Вопрос:
Я использую angular $stateProvider
, чтобы разрешить маршруты во всем моем приложении. У меня есть index.html
, и я изменяю содержимое html внутри, используя следующее…
app.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/app');
$stateProvider
.state('app', {
url: '/app',
templateUrl: 'templates/menu.html',
controller: 'AppCtrl'
})
.state('app.accounts', {
url: '/accounts',
templateUrl: 'templates/accounts.html'
})
});
Первый маршрут работает, при открытии приложение template/menu.html
помещается внутрь index.html
. Проблема возникает, когда я пытаюсь изменить состояние.
На данный момент я реализую API в своем приложении, то, что делает API, не имеет значения, но в случае успеха я хочу, чтобы API изменил состояние на app.accounts
, см. Ниже…
app.controller('AppCtrl', function($scope, $ionicModal, $timeout) {
$scope.create = function() {
var linkHandler = Plaid.create({
env: 'tartan',
clientName: 'Example Project',
key: 'test_key',
product: 'connect',
//On success I want to change the state
onSuccess: function(token) {
window.location = '/app/accounts';
},
});
linkHandler.open();
}
});
Выше, в случае успеха, я пытаюсь изменить состояние, но при window.location
вызове я получаю сообщение об ошибке…
net::ERR_FILE_NOT_FOUND (file:///app/accounts)
Я не уверен, почему я получаю эту ошибку, потому что первый маршрут работает нормально. Есть идеи, как я могу это исправить?
Ответ №1:
Ваш путь неверен. Вот о чем говорит ошибка. Он не может найти этот маршрут.
Попробуйте $window.location.href = "/#/app/accounts";
Не забудьте ввести $window
в контроллер.
Однако лучшим способом было бы внедрить $state
сервис и использовать его для навигации:
$state.go('app.accounts')
Комментарии:
1. хорошо, я сделал
href="#/app/accounts"
это, и ошибка исчезла, но вместо этого она перенаправляет меня вapp
состояние (исходное состояние). Вы знаете, почему?2. Вероятно, в маршруте что-то не так, и он вводится в метод .otherwise() в ваших определениях маршрутов
3. Однако, если вы используете $stateProvider, лучший подход для перенаправления — использовать $state.go(‘app.accounts’)
4. хорошо, я дам вам лучший ответ, потому что вы в значительной степени решили его, но я все еще не могу понять, почему это происходит в
otherwise
5. Вместо этого используйте $state.go . Поскольку вы используете ionic, вероятно, путь отличается от пути briwser