我正在尝试返回兄弟状态,就像我在 Ionic 应用程序中多次所做的那样。但这一次它只是不想这样做。
这是我调用 $state
的地方:
dataProvider.custom('/api/cats/' + catId + '/',
{
method: 'PUT',
data: data,
headers: {
'Content-Type': undefined
},
transformRequest: function (data, headersGetter) {
var formData = new FormData();
angular.forEach(data, function (value, key) {
formData.append(key, value);
});
headers = headersGetter();
delete headers['Content-Type'];
return formData;
}
})
.then(function (resp) {
$state.go('^.cat', {'cat': catId});
});
这是我的状态:
$stateProvider
.state('login', {
url: '/login',
templateUrl: 'templates/login.html'
})
.state('menu', {
url: '/menu',
abstract: true,
templateUrl: 'templates/main.html',
onEnter: function($state, Auth){
if(!Auth.isLoggedIn()) {
$state.go('login');
}
}
})
.state('menu.home', {
url: '/devel',
views: {
'menuContent': {
templateUrl: 'templates/devel.html',
}
}
})
.state('menu.catspad', {
url: '/catspad',
views: {
'menuContent': {
templateUrl: 'templates/catspad.html',
controller: 'CatspadCtrl',
}
}
})
.state('menu.cats', {
url: '/cats',
views: {
'menuContent': {
templateUrl: 'templates/cats.html',
controller: 'CatsCtrl',
resolve: {
items: ['dataProvider', function (dataProvider) {
return dataProvider.fetch('/api/cats/')
}]
}
}
}
})
.state('menu.cat', {
url: '/cat/view/{cat:int}',
views: {
'menuContent': {
templateUrl: 'templates/cat.html',
controller: 'CatDetailCtrl',
resolve: {
items: ['dataProvider', '$stateParams', function(dataProvider, $stateParams) {
return dataProvider.fetch('/api/cats/' + $stateParams.cat + '/detail/');
}]
}
}
}
})
.state('menu.catAddChange', {
url: '/cat/addchange?cat',
views: {
'menuContent': {
templateUrl: 'templates/catAddChange.html',
controller: 'CatAddChangeCtrl',
resolve: {
items: ['dataProvider', '$stateParams', function(dataProvider, $stateParams)
{
if ($stateParams.cat) {
return dataProvider.fetch('/api/cats/' + $stateParams.cat + '/detail/')
}}]
}
}
}
})
.state('menu.me', {
url: '/me',
views: {
'menuContent': {
templateUrl: 'templates/account.html',
controller: 'AccountCtrl',
}
}
})
.state('register', {
url: '/register',
templateUrl: 'templates/register.html'
});
$urlRouterProvider.otherwise('/menu/cats');
$ionicConfigProvider.views.transition("none");
相关 HTML:
main.html(抽象状态)
<ion-nav-view name="menuContent" class="customViewStyle"></ion-nav-view>
catAddChange.html:
<ion-view view-title="Change or add a cat" class="animated slideInUp">
在任何地方一切都工作正常,但在这里......发生了什么事?
最佳答案
错误在于提供给 menu.cat
状态的参数类型。
使用 typeof
进行调试后,catId
类型为 string
,因此不被状态接受,因为它需要一个 int
...
总而言之,我需要确保参数的类型符合 state
的预期(此处为 int
)。如果它收到“1”
(字符串)而不是1(数字),则它将不起作用,完全没有任何错误。
很难找到这个,希望对你有帮助。
关于angularjs - 改变状态什么也不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37489489/