Javascript 如何通过从angular中的另一个模板调用来重置文本字段
在下面的图片中,第一个是安全问题,它是一个下拉列表,第二个是文本框,我想在更改问题时将其清空 但问题是它们都是不同的模板,它们都没有任何链接 我用一个控制器把regex放在它们之间。这很好用。但问题是,当我更改安全问题时,无法清除文本框 下面是我的安全问题下拉模板。模板非常大,所以只是模板代码的必需部分请参考数据的第二部分ng单击Javascript 如何通过从angular中的另一个模板调用来重置文本字段,javascript,jquery,angularjs,node.js,templates,Javascript,Jquery,Angularjs,Node.js,Templates,在下面的图片中,第一个是安全问题,它是一个下拉列表,第二个是文本框,我想在更改问题时将其清空 但问题是它们都是不同的模板,它们都没有任何链接 我用一个控制器把regex放在它们之间。这很好用。但问题是,当我更改安全问题时,无法清除文本框 下面是我的安全问题下拉模板。模板非常大,所以只是模板代码的必需部分请参考数据的第二部分ng单击 <li data-ng-repeat="char in characteristic.getAvailableValues() | filter: {valu
<li data-ng-repeat="char in characteristic.getAvailableValues() | filter: {value: searchFilter}"
data-ng-class="{violatesCompatibilityRule: characteristic.doesValueViolateCompatibilityRule(char.id)}">
<a id="{{vm.productSpecIdPath}}---{{characteristic.characteristicSpecId}}---{{char.id}}---dropdownitem"
role="menuitem"
tabindex="-1"
href="javascript:void(0)"
data-ng-click="vm.selectCharacteristicValue(char.id); $root.securityQuestionRegex=characteristic.getSelectedValues()[0].regularExpression"
data-ng-bind="char.value">
</a>
哟。。我找到了解决办法
我在下拉模板“$root.emptyTextFlag”的ng点击中添加了一个额外的标志
当我从下拉列表中单击任何选项时,它会更改$root.emptyTextFlag=true的标志,因此在文本框中,它会清除文本,并在1/10秒后再次将其设置为false,这使我能够在文本框中键入。现在可以工作了。。我很高兴:):P请忽略安全问题模板中分配给$root.securityQuestionRegex的值。您可以假设它是传递给它的任何正则表达式字符串:)
<input ng-if="characteristic.getDisplayName() == 'Security Answer'"
type="text"
placeholder="{{'LABELS.USERDEFINEDCHARACTERISTICS.PLACEHOLDER.TEXT' | translate}}"
id="{{vm.productSpecIdPath}}---{{characteristic.getUserDefinedCharacteristicId()}}---{{$index}}---input"
name="{{characteristic.getUserDefinedCharacteristicId()}}-{{$index}}"
data-ng-model="value.value"
data-ng-change="value.value=$root.textboxRegexValidation(value.value);"
data-ng-disabled="characteristic.isReadOnly() || vm.isReserved"
data-ng-class="{ isReadOnly: characteristic.isReadOnly(), 'reduced-input-width': characteristic.getTooltipId(), dirty: characteristic.isDirty() }"
sigma-validation-pattern="{{characteristic.getRegularExpression()}}"/>
$rootScope.textboxRegexValidation = function (obj: any) {
if ($rootScope.securityQuestionRegex) {
var regEx = new RegExp($rootScope.securityQuestionRegex);
if (regEx.test(obj)) {
return obj;
} else {
return obj.substring(0, obj.length - 1);
}
} else {
return obj;
}
}
<a id="{{vm.productSpecIdPath}}---{{characteristic.characteristicSpecId}}---{{char.id}}---dropdownitem"
role="menuitem"
tabindex="-1"
href="javascript:void(0)"
data-ng-click="vm.selectCharacteristicValue(char.id); $root.securityQuestionRegex=characteristic.getSelectedValues()[0].regularExpression; $root.emptyTextFlag = true"
data-ng-bind="char.value">
</a>
<input ng-if="characteristic.getDisplayName() == 'Security Answer'"
type="text"
placeholder="{{'LABELS.USERDEFINEDCHARACTERISTICS.PLACEHOLDER.TEXT' | translate}}"
id="{{vm.productSpecIdPath}}---{{characteristic.getUserDefinedCharacteristicId()}}---{{$index}}---input"
name="{{characteristic.getUserDefinedCharacteristicId()}}-{{$index}}"
data-ng-model="value.value"
data-ng-change="value.value= $root.textboxRegexValidation(value.value) "
ng-value="value.value= $root.checkEmptyTextFlag() ? '' : value.value"
data-ng-blur= "$root.isMappingRuleTrigger(characteristic.getUserDefinedCharacteristicId()) ? vm.emitToggledEvent() : 'false'"
data-ng-disabled="characteristic.isReadOnly() || vm.isReserved"
data-ng-class="{ isReadOnly: characteristic.isReadOnly(), 'reduced-input-width': characteristic.getTooltipId(), dirty: characteristic.isDirty() }"
sigma-validation-pattern="{{characteristic.getRegularExpression()}}"/>
$rootScope.textboxRegexValidation = function (obj: any) {
if ($rootScope.securityQuestionRegex) {
var regEx = new RegExp($rootScope.securityQuestionRegex);
if (regEx.test(obj)) {
return obj;
} else {
return obj.substring(0, obj.length - 1);
}
} else {
return obj;
}
};
$rootScope.checkEmptyTextFlag = function (obj: any) {
if($rootScope.emptyTextFlag == true){
setTimeout(function () {
$rootScope.emptyTextFlag= false;
}, 100);
return true;
}
}