改变国家什么都不做

时间:2016-05-27 17:44:27

标签: angularjs ionic-framework angular-ui-router

我试图回到兄弟姐妹的状态,因为我在我的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">

一切都运作良好,但在这里......发生了什么?

1 个答案:

答案 0 :(得分:2)

错误在于menu.cat状态的参数类型。

使用typeof进行调试后,catId类型为string,因此状态不接受,因为它期待int ...

总而言之,我需要确保参数的类型与state期望的一样(int此处)。如果它收到"1"(字符串)而不是1(数字),而没有任何错误,则无效。

很难找到这个,希望这会有所帮助。