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