1
HTML:AngularJS NG-点击并不会在消化周期工作
<a href id="link "ng-click="print(arg)"> print </a>
Angularjs控制器:
$scope.return_promise =function(arg){
return $http.post('\path');
)};
$scope.print = function(arg){
url ="other/path/"
$scope.return_promise(arg).then(function(r){
if(r){
$('#link').attr('href', url);
});
};
问题:我铬调试检查,在href实际更新,但事件不会触发(即不去网址)。如果我再次点击它,它会起作用。
如果我在if
条款末尾添加语句document.getElementById('#link').click()
,它会提示错误“消化周期正在进行中”
我怎样才能解决这个问题。
您的代码不“走出去”任何地方,它只是改变了'href'。第二次点击它时,浏览器将'href'看作具有价值并且去那里。如果你想真的去那里,你需要在你的代码中告诉它。作为一个方面说明,你可能不应该使用jQuery来改变'href',angular并不总是能够识别外部框架的变化,尽管在这种情况下,这不是问题的原因。 – Claies
要更好地使用'$ location'来尝试,并且更好地访问dom元素,请尝试'angular.element()' – Hosar