получить сериализованный объект как параметры строки запроса в angularjs - PullRequest
0 голосов
/ 02 марта 2019

Я отправляю вложенный объект в качестве параметров запроса из AngularJs Controller со следующим кодом:

$scope.redirect = function () {
    const params = $httpParamSerializer({
        initval: {
            user: {
                id: 1,
                name: 'Username',
            }
        }
    })   
    $location.path('/url-to-other-controller').search(params);
})

, и мне нужно получить эту строку запроса в моем другом контроллере как объект, я пробовал несколько способов, в итоге использовал следующий код:

let qs = $location.search();
const initval = JSON.parse(qs.initval);
let userId = initval.user.id;

Я не уверен насчет моего метода, и если есть более чистый способ, так как я должен проанализировать результат первого параметра (initval).

Главный вопрос здесь, как правильно получить строку запроса, которые изначально являются объектами в angularJS?и это правильный способ отправки объектов в качестве параметров запроса?

1 Ответ

0 голосов
/ 02 марта 2019

Если вы используете JSON.parse, вам лучше использовать JSON.stringify:

$scope.redirect = function () {
    const params = {
        initval: JSON.stringify({
            user: {
                id: 1,
                name: 'Username',
            })
        }
    }
    $location.path('/url-to-other-controller').search(params);
})

Затем декодируйте:

let qs = $location.search();
const initval = JSON.parse(qs.initval);
let userId = initval.user.id;

Услуги $httpParamSerializer и $httpParamSerializerJQLikeДелайте забавные вещи с массивами, которые впоследствии плохо анализируются в JavaScript.

Сервисы $httpParamSerializer и $httpParamSerializerJQLike предназначены для взаимодействия с языками и средами, такими как PHP и Ruby on Rails.

...