在我的主index.html
文件中,我有以下简单的标记...
<body ng-app="starter" ng-controller="AppCtrl">
<div ui-view></div>
</body>
在我的app.js
我使用$stateProvider
创建路线,以便显示某些页面......
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'
})
});
加载页面时,会加载第一个状态,这意味着我可以在主menu.html
中看到index.html
的内容,并且控制器AppCtrl
将被传递到此状态。
我的AppCtrl
加载了我在点击menu.html
按钮时使用的API,API为用户提供了登录的用户界面,一旦凭据良好,{{1}被称为......
success
API的作用非常无关紧要,但正如您所看到的,我正在通过app.controller('AppCtrl', function($scope, $ionicModal, $timeout, $state) {
$scope.create = function() {
var linkHandler = Plaid.create({
env: 'tartan',
clientName: 'Example Project',
key: 'test_key',
product: 'connect',
onSuccess: function(token) {
$state.go('app.accounts');
},
});
linkHandler.open();
}
});
成功。但是我没有将状态更改为$state.go('app.accounts');
,而是调用app.accounts
语句,因为我看到的只是otherwise
状态的内容。
为什么会这样?我已经在这个问题上坚持了一段时间。
答案 0 :(得分:2)
app.accounts
是app
的子状态。这意味着在menu.html
中必须<ui-view>
才能显示accounts.html
。
如果您不想在accounts.html
内显示menu.html
,则不应让accounts
成为app
的子状态:
<body ng-app="starter">
<div ui-view></div>
</body>
和
app.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/app');
$stateProvider
.state('app', {
url: '/app',
templateUrl: 'templates/menu.html',
controller: 'AppCtrl'
})
.state('accounts', {
url: '/accounts',
templateUrl: 'templates/accounts.html'
})
});