我只想在从特定元素中删除焦点后更改输入(仅使用指令)我不想使用ng-focus
和ng-blur
例如 - 这里我想在焦点丢失时将文本更改为大写
文本框
我有一个文本框
<input type = "text" ng-model = "text" upper>
这里是我的指示
app.directive('upper', function () {
return {
require: 'ngModel',
link: function (scope, element, attr, ngModelCtrl) {
function fromUser(text) {
alert(text);
var transFormetInput = text;
transFormetInput = transFormetInput.toUpperCase();
alert(transFormetInput);
return transFormetInput;
}
ngModelCtrl.$parsers.push(fromUser);
}
};
});
现在,我的$解析器将在模型中输入的每个单词上更改输出 即在每个字母上它都会起火我想在我的范围发生变化后更改模型。
这是我的plunker
这个掠夺者有两个问题。
1)因为我在这里使用$ parser它会触发我不想要的每个单词输入,我希望它在我的文本框中丢失焦点时触发。
2)我的模型没有改变我的指示。
答案 0 :(得分:1)
我尝试保存您的plunker但我没有权限,所以,就这样使用。
app.directive('upper', function() {
return {
require: 'ngModel',
link: function(scope, element, attr) {
element.on('blur', function() {
element[0].value = element[0].value.toUpperCase();
});
}
};
});
这里是plunker 1
答案 1 :(得分:0)
如果你想要模糊,请尝试这样的事情:
link: (scope, el, attr, ctrl) => {
el.bind('blur', () => {
el.val(ctrl.yourInput.value);
});
}
您想要的值应该在控制器/型号上(链接中的第4个参数)。我建议每次更新时将其分配给变量,然后您可以在el.bind(&#39;模糊&#39;)方法中访问该变量。