AngularJS ng-click在摘要周期

时间:2016-12-01 03:39:00

标签: angularjs angular-digest

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 个答案:

答案 0 :(得分:0)

不确定我是否收到您的问题。首先,检查您粘贴的代码是否是您想要添加的代码,因为它有很多错误。如果您想要动态替换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;
        }
      });
    };
  }
}());