如何从角度外部启动$apply



我有一个递增计数器的按钮。计数从角度世界内部显示,而按钮在角度世界外部显示。我可以通过使其全局化(是的,丑陋)来获取角度世界的值,但是我如何获得一些 Angular 代码来使用$apply来更新它的$digest周期?(基于该点击事件)

顺便说一句:我知道我可以使用ng-click将点击事件带入Angular,但出于好奇,我想知道如何在不这样做的情况下解决这个问题。

这是 plnk:https://plnkr.co/edit/UTElTmggj3ae2c19bsL1?p=preview

var gCounter = 0;
$(function() {
$('#btn').on('click', function() {
  console.log('click!')
  gCounter++;
})
});

(function() {
  var app = angular.module('app', []);
  var ctrl = app.controller('ctrl', Ctrl);

  function Ctrl($scope) {
    $scope.$watch(function() {
      return gCounter
    }, function(newVal, oldVal) {
      $scope.counter = newVal;
    });
  }
}
 }());

您可以获取与单击的按钮关联的范围,然后$apply()使用

$(this).scope().$apply();

最新更新