我试图在单击主体中的控制器时添加事件侦听器。为此,我添加了应反变量 is_shown 的函数。问题是变量 is_shown 不会反过来。
是否可以仅在控制器中对变量 is_shown 求逆而不添加“ ng-click”之类的指令?
角度版本-1.6.2
<div ng-app="myApp" ng-controller="myCtrl">
<p>{{is_shown}}</p>
</div>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.is_shown = false;
$scope.toggleCont = function(){
alert('fired');
$scope.is_shown = !$scope.is_shown;
};
var body = angular.element(document.querySelector('body'));
body.on("click", function (e) {
$scope.toggleCont();
});
*在chrome调试器模式下,变量is_shown变为相反,但在p中未应用更改。
答案 0 :(得分:0)
调用切换功能后,您需要添加$scope.$apply();
。 body.on()不是一个角度事件,因此您需要此事件来更新值。但这不是实现您想要的最佳方法。
您可以创建一个指令,将其附加到body元素上,然后在其中执行此操作(内部链接功能):
element.on("click", (e: JQueryEventObject) => {
});