Javascript angular$stateProvider未按预期路由
在我的主Javascript angular$stateProvider未按预期路由,javascript,angularjs,ionic-framework,Javascript,Angularjs,Ionic Framework,在我的主index.html文件中,我有以下简单的标记 <body ng-app="starter" ng-controller="AppCtrl"> <div ui-view></div> </body> 当页面加载时,第一个状态被加载,这意味着我可以在我的mainindex.html中看到menu.html的内容,并且控制器AppCtrl被传递到此状态 MyAppCtrl从菜单中单击一个按钮即可加载我正在使用的API。html,该AP
index.html
文件中,我有以下简单的标记
<body ng-app="starter" ng-controller="AppCtrl">
<div ui-view></div>
</body>
当页面加载时,第一个状态被加载,这意味着我可以在我的mainindex.html
中看到menu.html
的内容,并且控制器AppCtrl
被传递到此状态
MyAppCtrl
从菜单中单击一个按钮即可加载我正在使用的API。html
,该API为用户提供了一个登录的UI,一旦凭据良好,则调用成功
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();
}
});
API的功能与此无关,但正如您所见,我正在传递$state.go('app.accounts')代码>关于成功。但是,我没有将状态更改为app.accounts
,而是认为调用了否则
语句,因为我看到的只是app
状态的内容
为什么会这样?我已经在这个问题上纠缠了一段时间。app.accounts
是app
的子状态。这意味着在menu.html
中必须有
才能显示accounts.html
如果您不想在菜单.html
中显示accounts.html
,则不应将accounts
设置为app
的子状态:
<body ng-app="starter">
<div ui-view></div>
</body>
app.accounts
是app
的子状态。这意味着在menu.html
中必须有
才能显示accounts.html
如果您不想在菜单.html
中显示accounts.html
,则不应将accounts
设置为app
的子状态:
<body ng-app="starter">
<div ui-view></div>
</body>
能否确保“onSuccess”回调可以访问$state。您可以使用console.log($state);在onSuccess函数中。@RaviTeja似乎确实有访问权限。当我console.log
时,我得到类似Object{params:Object,current:Object,$current:extend,transition:null}
你有与app.accounts
状态相关联的控制器吗?@RaviTeja不,我不应该吗?@RaviTeja真的坚持住,也许我会。我将ng controller
放在我的body
标记中…这可能是原因吗?您能否确保“onSuccess”回调可以访问$state。您可以使用console.log($state);在onSuccess函数中。@RaviTeja似乎确实有访问权限。当我console.log
时,我得到类似Object{params:Object,current:Object,$current:extend,transition:null}
你有与app.accounts
状态相关联的控制器吗?@RaviTeja不,我不应该吗?@RaviTeja真的坚持住,也许我会。我把ng控制器
放在我的身体
标签上……这可能是原因吗?
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'
})
});