仅当未禁用前一个元素时才使用指令
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();
;
【讨论】:
问题是这个指令经常使用,而且每个输入的条件都不同,所以我必须遍历整个项目并改变它,这就是为什么我想动态检查禁用的属性输入 问题是如果输入被禁用,我实际上想隐藏按钮 如果你想隐藏它,使用ngHide
或ngIf
:)
是的,我知道,但请告诉我如何从指令中的输入中获取 disabled 属性???
这是我的真实代码,我只是省略了模型名称和条件以上是关于仅当未禁用前一个元素时才使用指令的主要内容,如果未能解决你的问题,请参考以下文章
仅当未使用 @azure/msal-react 进行身份验证时才重定向 onLoad
仅当 Validation 为 True 时才启用 Jbutton