Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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 如何在不更改$location.search中参数值的情况下触发routeUpdate_Javascript_Angularjs_Angularjs Scope - Fatal编程技术网

Javascript 如何在不更改$location.search中参数值的情况下触发routeUpdate

Javascript 如何在不更改$location.search中参数值的情况下触发routeUpdate,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,在我的应用程序中,我使用routeUpdate检查$location.search字符串是否已更改,并在我的视图中相应导航。 像这样 $scope.$on('$routeUpdate', function(next, current) { var slide_key = $location.search().slide_key; if (slide_key) $scope.go_to_slide(slide_key); }); 还要记住,我使

在我的应用程序中,我使用
routeUpdate
检查
$location.search
字符串是否已更改,并在我的视图中相应导航。 像这样

$scope.$on('$routeUpdate', function(next, current) {        
    var slide_key = $location.search().slide_key;
    if (slide_key)
    $scope.go_to_slide(slide_key);      
});
还要记住,我使用
reloadOnSearch
false来不重新加载控制器

通常我会通过更改
$location.search
来触发此操作,效果良好

一切正常,但有一种情况,我想触发此行为而不更改搜索参数

我试图将搜索参数再次更改为相同的值->没有运气

如果我将其更改为另一个值,则会触发
routeUpdate
,一切正常


因此,如何在不更改
$location.search
中的参数值的情况下手动触发
路由更新

我认为你是对的,如果你想触发一个真正的
$routeUpdate
事件而不更改影响
$location.absUrl()
,那么你必须手动干预

此示例触发$routeUpdate事件:

<a ng-click="$emit('$locationChangeSuccess','hiya')" href="">update route</a>
// or the precise broadcast would be:
// $rootScope.$broadcast('$locationChangeSuccess',$location.absUrl(), $location.absUrl())

//或者确切的广播是:
//$rootScope.$broadcast(“$locationChangeSuccess”,$location.absUrl(),$location.absUrl())
但在当前代码中,您对
$routeUpdate
中的参数不做任何处理,因此您也可以只为
$routeUpdate
广播一个虚假或备用事件

其他看起来更干净的替代方案有其无法工作的原因:

<a ng-click="$emit('$locationChangeSuccess','hiya')" href="">update route</a>
// or the precise broadcast would be:
// $rootScope.$broadcast('$locationChangeSuccess',$location.absUrl(), $location.absUrl())
$route.reload()
始终强制实际更新路径:

$location
依赖于与
$browser
的url的比较,因此如果不更改url中有意义的部分,就无法使其正常启动:


我认为你是对的,如果你想触发一个真正的
$routeUpdate
事件而不改变影响
$location.absUrl()
的url,你必须手动干预

此示例触发$routeUpdate事件:

<a ng-click="$emit('$locationChangeSuccess','hiya')" href="">update route</a>
// or the precise broadcast would be:
// $rootScope.$broadcast('$locationChangeSuccess',$location.absUrl(), $location.absUrl())

//或者确切的广播是:
//$rootScope.$broadcast(“$locationChangeSuccess”,$location.absUrl(),$location.absUrl())
但在当前代码中,您对
$routeUpdate
中的参数不做任何处理,因此您也可以只为
$routeUpdate
广播一个虚假或备用事件

其他看起来更干净的替代方案有其无法工作的原因:

<a ng-click="$emit('$locationChangeSuccess','hiya')" href="">update route</a>
// or the precise broadcast would be:
// $rootScope.$broadcast('$locationChangeSuccess',$location.absUrl(), $location.absUrl())
$route.reload()
始终强制实际更新路径:

$location
依赖于与
$browser
的url的比较,因此如果不更改url中有意义的部分,就无法使其正常启动:


你能为这个拼凑一个小拼盘吗。这样调试会更容易。干杯我想我知道如何实现这一点,但我需要你的一些代码(可能是控制器?),这样我才能看到我的想法如何融入你的代码中。@dcodesmith刚刚完成工作,要回家,明天你就可以拿到代码了。嘿,还在等着:)@dcodesmith,我想他是指他的下一个工作日。。我删减了我测试的路线示例,你能为我做一个小的JSFIDLE吗。这样调试会更容易。干杯我想我知道如何实现这一点,但我需要你的一些代码(可能是控制器?),这样我才能看到我的想法如何融入你的代码中。@dcodesmith刚刚完成工作,要回家,明天你就可以拿到代码了。嘿,还在等着:)@dcodesmith,我想他是指他的下一个工作日。。我删减了测试的路线示例,谢谢。这就是我要找的。我应该把作业做得更好。虽然我在$emit上使用了$routeUpdate,但效果很好。你的例子对我不起作用。对于我来说,小提琴是一项很难使用的服务,特别是由于插值的变化,以及像您所做的修复;-)酷!但是很抱歉,fiddle无法工作,jsfiddle似乎对保存和编辑的运行使用了单独的路径,因此您必须在运行它之前更改一些内容。:)看起来我们可以在未来的小提琴中使用带有较新角度的*路径来绕过它:谢谢。这就是我要找的。我应该把作业做得更好。虽然我在$emit上使用了$routeUpdate,但效果很好。你的例子对我不起作用。对于我来说,小提琴是一项很难使用的服务,特别是由于插值的变化,以及像您所做的修复;-)酷!但是很抱歉,fiddle无法工作,jsfiddle似乎对保存和编辑的运行使用了单独的路径,因此您必须在运行它之前更改一些内容。:)看起来我们可以使用带有较新角度的*路径在未来的小提琴中绕过它: