Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用参数更新更改时的输入值_Javascript_Angularjs - Fatal编程技术网

Javascript 使用参数更新更改时的输入值

Javascript 使用参数更新更改时的输入值,javascript,angularjs,Javascript,Angularjs,我正在尝试在更改时替换输入中的任何空格。我正在使用ng change指令来实现这一点。我通常会这样编写代码,因为我希望removeInvalidCharacters函数可以重用,因此模型作为参数传递 <input model="vm.model.code" ng-change="vm.removeInvalidCharacters(vm.model.code)" /> 我在airbnb javascript风格指南中读到,这是一种糟糕的做法,

我正在尝试在更改时替换输入中的任何空格。我正在使用
ng change
指令来实现这一点。我通常会这样编写代码,因为我希望
removeInvalidCharacters
函数可以重用,因此模型作为参数传递

<input model="vm.model.code" ng-change="vm.removeInvalidCharacters(vm.model.code)" />

我在airbnb javascript风格指南中读到,这是一种糟糕的做法,我们应该返回值。确切地说,我们不应该“改变参数”()。什么是保持可重用功能的正确方法?

ng change
是一个指令,每次通过模板在模型中发生更改时都会触发该指令

在代码中,您将变量“text”声明为值为“vm.model.code”的参数。但是您的更改是对局部变量“text”进行的,而不是对模板中使用的变量进行的

改用这个:

vm.removeInvalidCharacters = function(text) {
  vm.model.code = text.replace(/ /g, '');
};
编辑:

如果要查找的是将变量作为引用而不是参数传递,请检查以下答案:

不完全清楚到底要问什么。在输入过程中,您不应该跟在用户后面,并“从他们脚下”更改他们的值。如果需要清理输入,请在表单提交或类似操作中进行。如果需要验证,请使用正则表达式捕获清理方法无法处理的模式。这是我首先要做的,但如果我想使
vm.removeInvalidCharacters
通用,该怎么办?e、 g.更改模型的任何属性vm.model.email等。我一直建议使用本地“文本”来修改参数,但如果我想将一些常见做法应用于此场景,该怎么办?您想要的是将参数作为引用传递,而不是Javascript中不可能的参数如果没有解决方法,Angular.js也需要知道这些更改,这样它就可以进行一个摘要循环并应用这些更改,因此我建议使用该模型。如果这还不能阻止你,我会用一个工作环境@laziotibjczyk的现有答案更新我的答案
vm.removeInvalidCharacters = function(text) {
  vm.model.code = text.replace(/ /g, '');
};