当模型被事件更改时如何渲染 Angular 视图?

Posted

技术标签:

【中文标题】当模型被事件更改时如何渲染 Angular 视图?【英文标题】:How to render an Angular view when the model is changed by events? 【发布时间】:2015-07-02 11:56:09 【问题描述】:

按下按钮时我需要隐藏“可见块”,但过了一会儿又出现了,没有按下按钮。这个版本不行。

<!DOCTYPE html>
<html ng-app="app">
<script src="angular.min.js"></script>

<body ng-controller="MyController as ctrl">
    <div ng-show="isShow">Visible block</div>
    <button ng-click="ctrl.change()">Hide Block</button>
</body>

<script>
    var app = angular.module('app', []);

    app.controller('MyController', function ($scope) 
        $scope.isShow = true;

        this.change = function() 
            $scope.isShow = false;
            setTimeout(function() 
                $scope.isShow = true;
            , 1000)
        
    );
</script>
</html>

【问题讨论】:

使用 $timeout 代替 setTimeout 谢谢!它适用于 $timeout 【参考方案1】:

您需要使用 Angular 的 $timeout 而不是通常的 setTimeout,如下所示:

$timeout(function() 
    $scope.isShow = true;
, 1000)

这是因为setTimeout$digest 之外工作; Angular 的包装器解决了这个问题。

【讨论】:

以上是关于当模型被事件更改时如何渲染 Angular 视图?的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2组件模型刷新视图,无需模型更改

Angular2:变量更改时视图不更新

如何在 FullCalendar DayGrid 视图中更改事件元素的大小?

Stickit:如何在每个模型后触发更改事件 -> 视图更改

如何从主干中的另一个视图绑定元素上的事件

React Native:如何更改 onPress 事件的视图