AngularJS ng-show只触发一次

AngularJS ng-show only triggering once

本文关键字:一次 ng-show AngularJS      更新时间:2023-09-26

我有以下HTML

    <div class="alert alert-danger col-sm-10 col-sm-offset-1" ng-show="showErrorMessage">
        <button data-dismiss="alert" class="close" ng-click="closeErrorMessage()">
            ×
        </button>
        <i class="fa fa-check-circle"></i>
        <strong>Error</strong> The following errors have occurred:
        <div ng-repeat="error in createResp.Errors">{{error}}</div>
    </div>

在我的JavaScript

   $scope.showErrorMessage = false;
   $scope.search = function () {
        var createOrderResp = myData.create($scope.request);
        createOrderResp.$promise.then(function (r) {
            $scope.createResp = r;
            if ($scope.createResp.Errors.length > 0) {
                $scope.showErrorMessage = true;
            }
        }, function (r) {
            handleResourceError(r);
        });
    };
    $scope.closeErrorMessage = function () {
        $scope.showErrorMessage = false;
    };

所以第一次一切都很顺利。如果响应包含错误,则显示div。然而,在单击关闭按钮closeErrorMessage()然后再次执行它之后,即使showErrorMessage标志变为true,错误警报也不会显示。

问题是data-dismiss。它将移除整个alert块。因此,在作用域中使用变量触发ng-show是没有帮助的,因为没有html部分,这将需要触发。