angularjs - 改变状态什么也不做

标签 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">

在任何地方一切都工作正常,但在这里......发生了什么事?

最佳答案

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

使用 typeof 进行调试后,catId 类型为 string,因此不被状态接受,因为它需要一个 int ...

总而言之,我需要确保参数的类型符合 state 的预期(此处为 int)。如果它收到“1”(字符串)而不是1(数字),则它将不起作用,完全没有任何错误

很难找到这个,希望对你有帮助。

关于angularjs - 改变状态什么也不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37489489/

相关文章:

javascript - Angular强制页面执行指令添加了html属性

javascript - 自动完成 jquery 不适用于 ngmodel 和 ngrepeat ( Angular )

javascript - Angular JS - Controller 在 ngRoute 时不起作用

javascript - Angular.js 中的 Promise

javascript - 更改 $scope 不反射(reflect)更新

javascript - AngularJS 1 包含来自模板的预制 html 代码

javascript - 如何使用 Angular JS 在状态之间导航

ionic-framework - Ionic 在 Modal 出现后全局调用函数

javascript - 使用状态参数在 Controller 中注入(inject)数据的更好方法。我不希望 url 更新我传递的内容

javascript - Angular 检测离开路线。