0

我正在使用$location我的控制器内的服务来启用深度链接。我的控制器做这样的事情:

$location.path("/"+param);
$("title").text(param);

第二行在第一行之后完成执行至关重要。否则,浏览器内的历史记录项将显示旧 URL 的新标题,而不是旧 URL。Google.com 目前有这个错误,尝试从主页搜索,然后再搜索,然后按住浏览器中的后退按钮并按最近的历史记录项,您就会明白我的意思了。

解决此问题的一种方法是:

$location.path("/"+param);
setTimeout(function() {
    $("title").text(param);
}, 1);

...但这对我来说不太合适。$location所以我的问题是,一旦单身人士完成了自己的业务,我如何强有力地推迟第二行的执行?

4

2 回答 2

0

我认为您正在寻找一种适合一般异步服务的方法(??)。在我看来,您想查看承诺/延迟实现,请参阅 http://docs.angularjs.org/api/ng .$q

“起初,为什么这种额外的复杂性值得麻烦可能并不明显。回报来自承诺和延迟 api 所做的保证。”

希望这可以帮助

- 担

于 2012-06-26T16:51:10.273 回答
0

AngularJS:使用 $location

请注意,setter 不会立即更新 window.location。相反,$location 服务知道范围生命周期,并在范围 $digest 阶段将多个 $location 突变合并为一个对 window.location 对象的“提交”。

于 2012-06-24T12:54:14.067 回答