Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在不重新加载控制器的情况下更新路由_Javascript_Angularjs_Ngroute - Fatal编程技术网

Javascript 在不重新加载控制器的情况下更新路由

Javascript 在不重新加载控制器的情况下更新路由,javascript,angularjs,ngroute,Javascript,Angularjs,Ngroute,我有一个特定汽车id的详细页面, 该页面包含照片列表(由服务返回) 用户可以点击这些照片来查看它们 我想生成一个URL,以便用户可以与所选用户共享页面 默认情况下打开卡片、照片和所选照片 没有必要重新加载页面,因为我已经加载了汽车 我只想在用户单击缩略图时调用该服务以获取所选照片的详细信息 我希望我的解释有助于理解这个问题。这是我的密码 function CarsController($scope, $routeParams, $location, CarsFactory, PhotosFact

我有一个特定汽车id的详细页面, 该页面包含照片列表(由服务返回) 用户可以点击这些照片来查看它们

我想生成一个URL,以便用户可以与所选用户共享页面 默认情况下打开卡片、照片和所选照片

没有必要重新加载页面,因为我已经加载了汽车 我只想在用户单击缩略图时调用该服务以获取所选照片的详细信息

我希望我的解释有助于理解这个问题。这是我的密码

function CarsController($scope, $routeParams, $location, CarsFactory, PhotosFactory) {

    CarsFactory.get({id: $routeParams.id}).$promise.then(function(car) {
        console.log(car);
    });

    PhotosFactory.query({carId: car.id}).$promise.then(function(photos) {

        /*
            List all the photos with carId = car.id
            and the user can click to see a specific image ($scope.selectPhoto)
        */
    });

    $scope.selectPhoto = function(photoId) {

        /*
            clicking on any photo should update
            the URL to /cars/{car.id}/{photoId}
            I tried with $location.search('photoId', photoId); but it adds a querystring, not a URL segment change.
        */
    }

    if ($routeParams.photoId) {
        PhotosFactory.get({id: $routeParams.photoId}).$promise.then(function(photo) {
            console.log('Default photo: ' + photo);
        });
    }
}

谢谢。

在页面中生成链接并在单击图像时显示链接可能会更容易:

<img ng-click="showDiv = !showDiv" src="..." />

<div ng-show="showDiv" >
    <a href="/url_part1/{value1}/url_part2/{value2}">link</a>
</div>

要更改url路径(或“段”),可以使用
$location.path('/cars/'+car.id+'/'+photoId.).replace()


使用ngRoute处理路由时,Angular应拦截位置更改并防止页面重新加载。路线参数将与
“/cars/:carId/:photoId?”
对齐,其中“?”使最终参数成为可选参数。多亏了
.replace()
,用户不必点击后退查看所有照片。

这将重新加载控制器,无需执行此操作。这正是我想要避免的(URL更新只是为了生成永久链接),这听起来正是我想要的,但它不起作用。它重新加载页面(我看到,因为我看到网络选项卡中的xhr调用+页面文本字段中输入的文本丢失),我的路线看起来与您发布的“/cars/:carId/:photoId”路线完全相同