如何使用主体的eventListener在Angular控制器中创建正确的切换?

时间:2019-07-11 07:24:01

标签: angularjs

我试图在单击主体中的控制器时添加事件侦听器。为此,我添加了应反变量 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中未应用更改。

1 个答案:

答案 0 :(得分:0)

调用切换功能后,您需要添加$scope.$apply();。 body.on()不是一个角度事件,因此您需要此事件来更新值。但这不是实现您想要的最佳方法。 您可以创建一个指令,将其附加到body元素上,然后在其中执行此操作(内部链接功能):

element.on("click", (e: JQueryEventObject) => {

});