Angular ui-router解析,http成功,stateParams

时间:2015-07-17 13:59:52

标签: php angularjs

我的目标是:

首先使用http post插入新的数据库记录,使用stateProvider解析并获取新的id并更改view和stateParams。

我有这个代码用于我的http post服务

myApp.service('postService', ['$http', function($http) {
this.insertNew = function() {
     $http.post('create_new.php')
    .success(function(data) {
        return data;
    });
};

create_new.php返回这样的ID(它有效,用控制台证明)

return json_encode($data);

并且stateProvider看起来像这样(部分)

 $stateProvider
 .state('newRecord', {
    resolve: {
        newArtID: ['postService',
            function(postService) {
                 return postService.insertNew();
        }]
    },
    params: {
        artID: <-- new ID from DB
    },

我在serval变种中使用stateParams进行了测试(在解析和params中)。如何将新ID带到stateParams,以便我可以从视图中访问?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我不确定你的操作是否正确。 params适用于拥有该数据的情况。您应该从您的解析中返回数据,然后您可以在您的范围内访问它,例如:

服务:

.service('postService', function ($http) {
    this.insertNew = function () {
        return $http.post('create_new.php').then(function (data) {
            return data;
        });
    }
})

路线:

    $stateProvider
        .state('newRecord', {
            views: {
                "main": {
                    controller: 'SomeCtrl',
                    templateUrl: '...'
                }
            },
            resolvedId: {
                newArtID: function (postService) {
                    return postService.insertNew().then(function (response) {
                        return response;
                    });
                }
            }
        })

控制器:

    .controller('SomeCtrl', function (resolvedId) {
        var newID = resolvedId.id;  //depending on what is returned
    });