AngularJS ng-click не работает в цикле дайджеста
Html:
<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);
});
};
Проблема: я проверил с помощью отладчика chrome, href фактически обновлен, но событие не срабатывает (т.е. не переходит на URL). Если я нажму еще раз, это работает.
Если я добавлю заявление document.getElementById('#link').click()
в конце if
предложение выдаст сообщение об ошибке "Идет цикл дайджеста"
Как я могу решить это.
1 ответ
Не уверен, получу ли я ваш вопрос. Во-первых, проверьте, является ли код, который вы вставляете, тем кодом, который вы хотели добавить сюда, потому что он содержит множество ошибок. Если вы хотите заменить динамически href
Атрибут сделать это так:
<div ng-controller="SomeCtrl as ctrl">
<a href="ctrl.url" id="link "ng-click="ctrl.print(arg)">print</a>
</div>
(function () {
'use strict';
angular
.module('module')
.controller('SomeCtrl', SomeCtrl);
SomeCtrl.$inject = ['$scope'];
function SomeCtrl($scope) {
var vm = this;
vm.url = "#";
vm.return_promise = function (arg) {
return $http.post('/path');
};
vm.print = function (arg) {
var url = "other/path/";
vm.return_promise(arg).then(function (r) {
if (r) {
vm.url = url;
}
});
};
}
}());