Angular routeProvider и проходящие области

Я использую routeProvider для создания глубоких ссылок в своем приложении. Моя проблема в том, что мне нужно иметь несколько уровней. Итак, скажем, у меня есть страница продуктов, ссылка будет:

http://example.com/#/products

$scope.products содержит все продукты. После нажатия на продукт мне нужно сохранить $scope.products и изменить URL-адрес на http://example.com/#/products/1. '/1' - это идентификатор продукта.


person Caleb Prenger    schedule 06.07.2016    source источник


Ответы (1)


на вашем контроллере продуктов создайте функцию и вызовите ее, чтобы перейти на страницу редактирования http://example.com/#/products что-то вроде этого...

$scope.edit = function (data) {
        $window.location.href = '#/Products/Edit' + '?id=' + data.id;
    };

на вашем контроллере редактирования вызовите $routeParams и загрузите объект из вашего API, так как он мог измениться

function loadProduct()
    {
        productEditFactory.getProduct($routeParams.id).then(function (response) {
            $scope.product = response.data;
        }, function (response) {

        });
    }

    if ($routeParams.id)
    {
        loadProduct();
    }
    else {
        $scope.editMode = false;
    }

вам также необходимо обновить определение $routeProvider примерно так...

.when('/Product/Edit', {
        templateUrl: function (params) { return 'Products/Edit?id=' + params.id ; }
    })
person Tavitos    schedule 06.07.2016
comment
Но проблема в том, что он не сохраняет $scope.products - person Caleb Prenger; 07.07.2016
comment
вы можете использовать $rootScope, чтобы сохранить массив, так как обычная $scope будет уничтожена между навигацией - person Tavitos; 07.07.2016