problema do roteador ui nas visualizações de chamada da estrutura iônica
-
20-12-2019 - |
Pergunta
Eu tenho um aplicativo em estrutura iônica usando o exemplo de guias em sua maior parte.Porém, em uma das visualizações, quero que o usuário possa clicar em um item e ir para outra visualização com base nesse item.
Entretanto, sempre que você clica em um item, ele carrega a visualização correta, mas não chama o arquivo de modelo dessa visualização.
Aqui está o que tenho em meu roteador (observe que seções não relevantes foram deixadas de fora)
$stateProvider.state('tab', {
url: "/tab",
abstract: true,
templateUrl: "templates/tabs.html"
}).state('tab.dash', {
url: '/dash',
views: {
'tab-dash': {
templateUrl: 'templates/tab-dash.html',
controller: 'LoginController'
}
}
}).state('tab.friend-detail', {
url: '/friend/:friendId',
views: {
'tab-friends': {
templateUrl: 'templates/friend-detail.html',
controller: 'FriendDetailCtrl'
}
}
}).state('tab.buy', {
url: '/buy',
views: {
'tab-buy': {
templateUrl: 'templates/buy.html',
controller: 'PaymentController'
}
}
}).state('tab.account', {
url: '/account',
views: {
'tab-account': {
templateUrl: 'templates/tab-account.html',
controller: 'AccountController'
}
}
}).state('tab.order', {
url: '/account/order/:id',
views: {
'tab-order': {
templateUrl: 'templates/order-view.html',
controller: 'OrderController'
}
}
})
$urlRouterProvider.otherwise('/tab/dash');
No meu controlador eu tenho:
$scope.viewOrder = function(id) {
$state.go('tab.order', {id:id});
};
Em templates/tab-account.html eu tenho:
<ion-view title="Account">
<ion-content class="has-header padding">
<h1>Account</h1>
<h2>Your orders</h2>
<div class="card" ng-repeat="booking in bookings">
<div class="item item-text-wrap">
<b><a ng-click="viewOrder(booking.id)">{{ booking.carpark.city }}</a></b> on <b>{{ booking.date | date:'dd.mm.yyyy' }}</b>
</div>
</div>
Então a visualização específica do item é a seguinte:
<ion-view title="Order">
<ion-content class="has-header padding">
<h1>Your Order</h1>
<p>Test</p>
Order #: {{orderNumber}}
</ion-content>
</ion-view>
Essa última visualização basicamente não aparece, mesmo que o URL mude de tab/account
para /tab/account/order/1
Recentemente, fiz algumas perguntas ao StackOverflow sobre ionic. Peço desculpas se as pessoas continuam encontrando-as e, com razão, pensam que sou um idiota:/
Desde já, obrigado!
Solução
Você precisa de uma visualização da interface do usuário em sua visualização base.Quando você aninha estados, a visualização aninhada é exibida dentro da visualização base sempre que você tiver um elemento ui-view: <div ui-view></div>
.