我有一个指向另一个使用ui-sref锚点的页面的链接:
`<a ui-sref="details({'id': '12345', '#': 'parts'})" target="_blank">
to parts
</a>`
当链接在同一个窗口中打开时(没有target="_blank"
),它可以完美地工作,因此stateProvider可以正确处理它。
但是当在新窗口(target="_blank"
)中打开时,会忽略锚标记。页面在底部打开,好像锚点不在那里 - 页面不会滚动到片段标识符指定的片段
我可以配置我的状态,以便正确处理带有锚点的URL吗?类似的东西:
function runsConfig($stateProvider) {
$stateProvider
.state('details', {
url: '/details?id?#parts', // <-- add the anchor in the url definition?
...
})
但这不起作用......我觉得以前已经解决了这个问题,但我似乎无法找到如何做到的暗示。
修改
正如@georgeawg和@ Jonathan-Brizio建议的那样(谢谢!!!)我必须在合适的时间自己触发scoll事件,这可能是由于某些嵌入式组件需要一段时间来渲染。为什么它在同一个标签页面中打开页面时才有效。
这就是诀窍:
vm.$onInit = function()
{
$timeout($anchorScroll);
};
由于缺少等待时间参数,$ anchorScroll会在呈现组件时立即执行($postLink()
仍然太早)。
再次感谢@georgeawg和@ Jonathan-Brizio的帮助