【问题标题】:handling an array of alerts in angular以角度处理一系列警报
【发布时间】:2015-11-08 06:16:27
【问题描述】:

好的,所以我正在尝试自学有角度,但我被困在我想要完成的事情上。基本上,它是一个使用 UI Bootstrap 构建的简单表单。当用户将焦点放在文本框、文本区域、单选按钮组等时,我希望显示一个信息警报框。这样的警报框将包含有关他们正在填写的这个特定字段的说明。每当用户单击关闭时,警报框应该消失。到目前为止,我已经将这个功能与 onFocus 和 onBlur 一起使用。我的问题是,我无法隔离仅适用于用户所在领域的功能。除非我在我的应用程序中创建多个控制器并且我发现很难相信这将是解决方案。

如何在数组中声明多个警报框并从各自的输入字段调用它们?

这是我的 app.j 代码

var nameApp = angular.module('nameApp', ['ngAnimate', 'ui.bootstrap', '$strap.directives']);

nameApp.controller('InstructionsCtrl', function ($scope, $sce, $timeout) {

    $scope.alerts = [];

    $scope.addAlert = function () {
        $scope.alerts.push({ type: 'info', msg: 'Please input your first name' });
    };

    $scope.closeAlert = function (index) {
        $scope.alerts.splice($scope.alerts.indexOf(this), 1);
    };

});

我包括一个 PLUNKER here

提前致谢

【问题讨论】:

    标签: angularjs angularjs-directive angular-ui-bootstrap


    【解决方案1】:

    我建议将其简化为仅模板,因为根据所描述的要求,您不需要显示与每个输入相关的多个警报。

    在下面的警报中有一个 ng-show,每个输入设置焦点和模糊的值。

    <div class="form-with-instructions" ng-controller="InstructionsCtrl" novalidate="novalidate">
        <div role="form">
            <div class="row">
                <div class="col-md-6 col-sm-6 col-xs-12">
                    <div class="form-group">
                        <label>First Name </label>
                        <input type="text" value="" class="form-control" ng-focus="fnAlert = true" ng-blur="fnAlert = false"/>
                    </div>
                </div>
                <div class="col-md-6 col-sm-6 col-xs-12">
                  <div class="alert alert-warning alert-dismissible" role="alert" ng-show="fnAlert">
                    <button type="button" class="close" ng-click="fnAlert = false"><span aria-hidden="true">&times;</span></button>
                    Please input your first name
                  </div>
                </div>
            </div> 
            <div class="row">   
                <div class="col-md-6 col-sm-6 col-xs-12">
                    <div class="form-group">
                        <label>Last Name </label>
                        <input type="text" value="" class="form-control" ng-focus="lnAlert = true" ng-blur="lnAlert = false"/>
                    </div>
                </div>
                <div class="col-md-6 col-sm-6 col-xs-12">
                  <div class="alert alert-warning alert-dismissible" role="alert" ng-show="lnAlert">
                    <button type="button" class="close" ng-click="lnAlert = false"><span aria-hidden="true">&times;</span></button>
                    Please input your first name
                  </div>
                </div>
            </div>            
        </div>  
    </div>
    

    如果您确实想使用警报数组方法,那么您需要为每个输入定义不同的警报数组。

    【讨论】:

    • 这是一个非常好的答案。我会标记的。然而,有点失望的是 app.js 中没有更多的工作,因为毕竟,我正在尝试提出我可以学习的实际练习。但如果它有效,它就有效,对吧?哈哈。非常感谢朋友。我希望看到其他任何人关心的其他替代方案来为这个问题添加一个警报数组解决方案。我觉得学习如何使用数组将在其他可能需要它的情况下帮助我
    猜你喜欢
    • 2019-04-14
    • 2022-08-16
    • 1970-01-01
    • 2023-01-02
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    相关资源
    最近更新 更多