我有一个递增计数器的按钮。计数从角度世界内部显示,而按钮在角度世界外部显示。我可以通过使其全局化(是的,丑陋)来获取角度世界的值,但是我如何获得一些 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();