Javascript 角度路由提供器和通过范围

Javascript 角度路由提供器和通过范围,javascript,angularjs,route-provider,Javascript,Angularjs,Route Provider,我正在使用routeProvider在我的应用程序中创建深度链接。我的问题是我需要有多个层次。假设我有一个产品页面,链接是: $scope.products包含所有产品。单击产品后,我需要能够保留$scope.products并将URL更改为。“/1”是产品的id 在您的产品控制器上创建一个函数并调用它以导航到编辑页面,如下图所示 $scope.edit = function (data) { $window.location.href = '#/Products/Edit'

我正在使用routeProvider在我的应用程序中创建深度链接。我的问题是我需要有多个层次。假设我有一个产品页面,链接是:


$scope.products包含所有产品。单击产品后,我需要能够保留$scope.products并将URL更改为。“/1”是产品的id

在您的产品控制器上创建一个函数并调用它以导航到编辑页面,如下图所示

$scope.edit = function (data) {
        $window.location.href = '#/Products/Edit' + '?id=' + data.id;
    };
.when('/Product/Edit', {
        templateUrl: function (params) { return 'Products/Edit?id=' + params.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定义

$scope.edit = function (data) {
        $window.location.href = '#/Products/Edit' + '?id=' + data.id;
    };
.when('/Product/Edit', {
        templateUrl: function (params) { return 'Products/Edit?id=' + params.id ; }
    })

但问题是它没有保留$scope.products您可以使用$rootScope保留数组,因为正常的$scope将在导航之间被删除