仅当未禁用前一个元素时才使用指令

Posted

技术标签:

【中文标题】仅当未禁用前一个元素时才使用指令【英文标题】:Use directive only if previous element is not disabled 【发布时间】:2016-06-25 03:53:53 【问题描述】:

情景:

我有一个这样的输入框

 <ion-input class="item item-input">
      <ion-label>Field</ion-label>
           <input type="text" ng-disabled="someCondition" model="somemodel" />
           <directive-element></directive-element>
 </ion-input>

现在我正在使用指令将“指令元素”替换为单击时调用函数的按钮,但我无法检测到输入是否被禁用我已经通过element[0] 尝试过找到它但没有运气

.directive('directiveElement', function ()    
    return 
        restrict: 'AE',
        replace: true,
        template: function (element, attrs)  
             var input = ?????.
             if(input.disabled == false)             
                return "<button ng-click='myFunction()'></button>"; 
             else
                //DOnt show the button 
                       
        ,
        link: function (scope, element, attrs) 
                scope.myFunction()
                    //some logic
                  


        ;
    

)

编辑:

template: function (element, attrs) 
    if (element[0].previousElementSibling != null && element[0].previousElementSibling.tagName == 'INPUT' && element[0].previousElementSibling.disabled == true) 
          //this actually works kinda but somehow i still see the button...
    
,

我不会使用 Jquery,如果可能的话我想避免使用 Jqlite

问候

【问题讨论】:

【参考方案1】:

您可以传递条件并在第三个函数中检查它:

template: function (element, attrs)             
        return "<button ng-click='myConditionalFunction(someCondition)'></button>";             
,
link: function (scope, element, attrs) 
      scope.myFunction()
           //some logic
       

      scope.otherFunction()
           //some other logic
        

      scope.myConditionalFunction(condition)
          if (condition) 
             scope.myFunction();
           else 
             scope.otherFunction();
          
      

;

【讨论】:

问题是这个指令经常使用,而且每个输入的条件都不同,所以我必须遍历整个项目并改变它,这就是为什么我想动态检查禁用的属性输入 问题是如果输入被禁用,我实际上想隐藏按钮 如果你想隐藏它,使用ngHidengIf :) 是的,我知道,但请告诉我如何从指令中的输入中获取 disabled 属性??? 这是我的真实代码,我只是省略了模型名称和条件

以上是关于仅当未禁用前一个元素时才使用指令的主要内容,如果未能解决你的问题,请参考以下文章

仅当未使用 @azure/msal-react 进行身份验证时才重定向 onLoad

仅当特定输入为空时,如何禁用按钮?

WooCommerce:在编辑订单上禁用日期

仅当 Validation 为 True 时才启用 Jbutton

使用 ng-include 作为父节点时,使用 jquery 禁用所有子元素的 Angular 指令不起作用

Angular 2:仅当表单数据有效时才将表单数据从子级传递给父级