Angularjs 改变状态没有任何作用
我正试图回到兄弟姐妹的状态,就像我在Ionic应用程序中做的很多次一样。但这次它只是不想这么做 这里是我调用Angularjs 改变状态没有任何作用,angularjs,ionic-framework,angular-ui-router,Angularjs,Ionic Framework,Angular Ui Router,我正试图回到兄弟姐妹的状态,就像我在Ionic应用程序中做的很多次一样。但这次它只是不想这么做 这里是我调用$state的地方: dataProvider.custom('/api/cats/' + catId + '/', { method: 'PUT', data: data, headers: {
$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(抽象状态)
catAddChange.html:
<ion-view view-title="Change or add a cat" class="animated slideInUp">
除了这里,其他地方一切都很好。。。发生了什么事?错误在于提供给
菜单的参数类型。cat
状态
使用typeof
进行调试后,catId
类型为string
,因此状态不接受,因为它需要int
总之,我需要确保参数的类型符合状态
的预期(int
)。如果它接收到的是“1”
(字符串)而不是1(数字),而没有任何错误,则它将无法工作
很难找到这个,希望这能有所帮助。你能添加
concole.log(catId)代码>就在$state.go('^.cat',{'cat':catId})之前代码>?因为若参数未定义,则不会出现错误。若未定义,则catId为1
。确定。您还可以将console.log
放在解析部分(在menu.cat state中)和CatDetailCtrl中吗?当然,console.log
在解析时不会触发,在CatDetailCtrl
中显示1,这很奇怪。接下来会发生什么?页面是否呈现?控制台中有错误吗?是否显示了“项”?实际上,我的第一个问题是关于参数的类型。我敢肯定,在控制台中,您得到的是“1”
,而不是1
console.log()
打印1
,在这两种情况下,都只是测试了它。对不起,我很惊讶,甚至console.log(“1”)代码>'打印1
。
<ion-view view-title="Change or add a cat" class="animated slideInUp">