我需要使用angularJs将所有输入的字符串转换为大写,我尝试使用jQuery并且它完美地工作但我不知道如何使用angularJs操纵元素。
pd。项目是在sigle页面制作的,所以我有很多控制器,我想在所有控制器上使用这个功能。 下面的代码是在“ng-run()”函数中编写的,它适用于所有项目,无论控制器是否正在使用(它在页面重新加载时都有效)。
$("input").keyup(function() {
this.value = this.value.toUpperCase();
});
答案 0 :(得分:0)
如果您只需要UI的大写字母而不是JS逻辑内部的任何内容,您可以在文本上使用an uppercase Filter。
根据您输入的方式,您还可以执行诸如将功能添加到ng-change
以进行输入之类的操作。请参阅ng-change
here的文档。这也会将输入值更改为大写字母。
<input ng-model="txt" ng-change="txt = txt.toUpperCase()"/>
<h1>{{txt}}</h1>
如果您正在做一些比简单地大写文本更先进的事情,您可以使用ng-change
中的函数而不是内联命令。 (无论如何我都推荐这种方式,因为它比内联JavaScript更容易调试。)
<input ng-model="txt" ng-change="makeCapital()"/>
makeCapital()
看起来像这样:
$scope.makeCapital = function(){
txt = txt.toUpperCase()
}
如果要创建大写文本的副本,但又不想编辑双向绑定的原始文本,则可以使用复制该文本的函数将变量绑定到第二个变量,然后更改该变量的大小写。
<input ng-model="txt" ng-change="makeCapitalCopy()" />
makeCapitalCopy()
看起来像这样:
$scope.makeCapitalCopy = function() {
$scope.capitalCopy = $scope.txt.toUpperCase();
// This capitalCopy variable doesn't need to be on the $scope.
// If you're not going to display the value back on the view and just want to manipulate it internally, just declare it locally.
}
但是,对于后一种选择,取决于你的数据目标是什么,如果你想将输入反映回视图,我认为这是过度杀伤并且无法实现双向绑定。