AngularJS从指令发出事件并更新DOM

时间:2016-07-19 00:14:57

标签: angularjs

在问这个问题之前,我在网上查了一下,但我找不到合适的答案。

所以,我想从指令向控制器发出一个事件,当这个事件发生时,我想更新DOM。我做了一个假人plunker,请检查一下。

当我发出事件时,控制器注意到但他没有更新DOM。请在发射事件时查看控制台。

任何人都可以向我解释一下吗? 谢谢

1 个答案:

答案 0 :(得分:2)

你需要在$ scope.show = true周围包装$ scope。$ apply,如:

$scope.$apply(function() {
    $scope.show = true;
});

基本上当你发出事件并且你的控制器捕获它并将$ scope.show设置为true时,逻辑发生在Angular的摘要周期之外。由于摘要周期没有看到更新,因此它不会更新DOM。

$ scope。$ apply明确告诉Angular:"嘿,我已经更新了这个变量,检查出来并为我更新了DOM"

更多信息和非常好的解释:http://jimhoskins.com/2012/12/17/angularjs-and-apply.html