Angularjs 指令无法由 javascript 添加
Angularjs directive not work to added by javascript
当我通过点击事件添加这个元素时,我想正常工作我的指令。
我检查了最初声明的代码是否按预期工作。
这个html元素是在调用某些点击事件时由javascript函数添加的
<input type="text" reg="'^[-+]?([0-9]|[0-8][0-9]|9[0])$'" reg-check>
这是我的指令代码
TEST.directive('regCheck', function(){
return {
restrict : 'A',
scope: {
reg : '='
},
link : function(scope, element, attrs){
var regEx = new RegExp(scope.reg);
var previousValue;
console.log(regEx);
$(element).on('keyup' ,function(){
var dInput = element[0].value
console.log(dInput);
if(regEx.test(dInput) || dInput =='' || dInput =='-') previousValue = dInput
else element[0].value = previousValue
});
}
}
})
我认为这个问题是由于 jquery 事件没有呈现给添加的元素造成的。
所以我尝试
$(document).on('keyup', element ,function(){
var dInput = element[0].value
console.log(dInput);
if(regEx.test(dInput) || dInput =='' || dInput =='-') previousValue = dInput
else element[0].value = previousValue
});
这也行不通。我该怎么办?
我认为您无法在 keyup
事件上触发指令?
$
未定义。简单 mod 让你继续:
app.directive('regCheck', function(){
return {
restrict : 'A',
require: 'ngModel',
scope: {
reg : '='
},
link : function(scope, element, attrs, ngModel){
var regEx = new RegExp(scope.reg);
var previousValue;
console.log(regEx);
element.on('keyup' ,(ngModel) => {
console.log('value', ngModel.target.value);
var dInput = element[0].value
console.log(dInput);
if(regEx.test(dInput) || dInput =='' || dInput =='-') previousValue = dInput
else element[0].value = previousValue
});
}
}
})
并在您的输入中添加一个 ng-model,输入的值会在每次 keyUp 事件时输出到控制台。
<input type="text" ng-model="inputValue" reg-check reg="'^[-+]?([0-9]|[0-8][0-9]|9[0])$'">
注意:我没有检查指令或正则表达式的逻辑,因为我认为这不是问题所在。
当我通过点击事件添加这个元素时,我想正常工作我的指令。
我检查了最初声明的代码是否按预期工作。
这个html元素是在调用某些点击事件时由javascript函数添加的
<input type="text" reg="'^[-+]?([0-9]|[0-8][0-9]|9[0])$'" reg-check>
这是我的指令代码
TEST.directive('regCheck', function(){
return {
restrict : 'A',
scope: {
reg : '='
},
link : function(scope, element, attrs){
var regEx = new RegExp(scope.reg);
var previousValue;
console.log(regEx);
$(element).on('keyup' ,function(){
var dInput = element[0].value
console.log(dInput);
if(regEx.test(dInput) || dInput =='' || dInput =='-') previousValue = dInput
else element[0].value = previousValue
});
}
}
})
我认为这个问题是由于 jquery 事件没有呈现给添加的元素造成的。 所以我尝试
$(document).on('keyup', element ,function(){
var dInput = element[0].value
console.log(dInput);
if(regEx.test(dInput) || dInput =='' || dInput =='-') previousValue = dInput
else element[0].value = previousValue
});
这也行不通。我该怎么办?
我认为您无法在 keyup
事件上触发指令?
$
未定义。简单 mod 让你继续:
app.directive('regCheck', function(){
return {
restrict : 'A',
require: 'ngModel',
scope: {
reg : '='
},
link : function(scope, element, attrs, ngModel){
var regEx = new RegExp(scope.reg);
var previousValue;
console.log(regEx);
element.on('keyup' ,(ngModel) => {
console.log('value', ngModel.target.value);
var dInput = element[0].value
console.log(dInput);
if(regEx.test(dInput) || dInput =='' || dInput =='-') previousValue = dInput
else element[0].value = previousValue
});
}
}
})
并在您的输入中添加一个 ng-model,输入的值会在每次 keyUp 事件时输出到控制台。
<input type="text" ng-model="inputValue" reg-check reg="'^[-+]?([0-9]|[0-8][0-9]|9[0])$'">
注意:我没有检查指令或正则表达式的逻辑,因为我认为这不是问题所在。