我正在尝试在AngularJS指令中更新
以下是我的指令的HTML代码:
$location.path
。但它并没有按照我期望的那样工作,也就是没有更新浏览器窗口中显示的URL,并且在我的页面上显示不同的内容。我的函数确实以正确的值被调用,如控制台所示。我认为$location.path
可能会产生一些影响,因为当我单击链接时,会调用一些其他的函数,这些函数将在新页面上调用,只是新页面从未显示出来。当我在控制器中使用$location.path
时,它按预期工作,但在我的指令中却不起作用。以下是我的指令的HTML代码:
<div detail-link="/comments?post={{post.postId}}" ng-click="clickDetailLink()"></div>
这是指令的定义(使用 CoffeeScript 编写):
directives.directive 'detailLink', ['$location', ($location) ->
return (scope, element, attrs) ->
scope.clickDetailLink = ->
console.log "loading " + scope.detailLinkHref
$location.path scope.detailLinkHref
attrs.$observe 'detailLink', (value) ->
console.log "set detail link to " + value
scope.detailLinkHref = value
]
我有一个线索,知道这里发生了什么......我的$routeProvider
被设置为处理/comments
,但是我在尝试将查询字符串附加到路由中。如果我使用常规的<a href="#/comments?post={{post.postId}}">
,那就可以正常工作,但是通过$location.path
设置相同的路由却不起作用。无论这段代码是在控制器还是指令中都是如此。
$apply already in progress
。将其包装在$timeout
中可以解决“already in progress”的问题,但仍无法更新路径。我会编辑我的问题...谢谢! - jab