【问题标题】:how to Hide the angular element based on a condition如何根据条件隐藏角度元素
【发布时间】:2018-04-23 07:28:17
【问题描述】:

我正在为input 验证创建自定义指令。这里我检查了输入长度,如果输入长度为零,它会显示错误,如果输入是字符,我想隐藏它。

这是我的代码:

app.directive("formValidate", function() {
  return {
    require: 'ngModel',
    template: '<p>Please Fill this Field</p>',
    link: function(scope, elem, attr) {

        scope.$watch(attr['ngModel'], function(value) {

            if (((value || '').toString()).length == 0) {
                var errorMessage = angular.element("<p class='error'>This field is requiured!</p>");
                errorMessage.insertAfter(elem);
                //$compile(errorMessage)(scope);
            } else {
                 // What to do??
            }
        })


   <input form-validate required md-no-asterisk ng-model="newEmployee.name" type="text" id="name" name="name">

【问题讨论】:

  • 您可以使用此答案中描述的“ng-show”参数:stackoverflow.com/a/19021489/4603295
  • 我想获取类,如果输入长度大于零,去掉错误类,怎么办??
  • 你想从控制器中隐藏???
  • 不,我想使用角度元素中指定的类来隐藏

标签: javascript angularjs angularjs-directive


【解决方案1】:

如果你想用类隐藏元素,那么你可以用

创建一个类
display:none

属性,并使用ng-class应用类

但 Angular 本身提供了良好的指令,称为 ng-showng-hide

ng-show 或 ng-hide 将渲染 DOM 元素,但只会在满足条件时隐藏。如果你使用ng-if,它甚至不会渲染 DOM,除非满足条件。

if (((value || '').toString()).length == 0) {
   $scope.hasError = true;
}else{
//do whatever 
}

在 HTML 中只使用

<p ng-show="hasError">Your Error Msg</p>

还有很多其他方法可以用来做同样的事情。

【讨论】:

  • 值为零时不显示任何错误
  • 嗨,请检查您的变量是否在范围内..?尝试在 HTML 中打印变量的值。或尝试使用此方法,它工作正常。 &lt;input type="text" ng-model="test"&gt; &lt;p ng-show="test.length ==0"&gt;Error&lt;/p&gt;
  • 是否要定义指令的范围?
  • Error

    这甚至不需要指令。 ..
猜你喜欢
  • 2021-12-01
  • 2015-09-01
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多