angular $ stateProvider未按预期路由

时间:2016-10-02 01:47:08

标签: javascript angularjs ionic-framework

在我的主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状态的内容。

为什么会这样?我已经在这个问题上坚持了一段时间。

1 个答案:

答案 0 :(得分:2)

app.accountsapp的子状态。这意味着在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'
    })
});