javascript - 使用参数更新输入值
问题描述
我正在尝试在更改时替换输入中的任何空格。我正在使用ng-change
指令来实现这一点。我通常会这样编写代码,因为我希望removeInvalidCharacters
函数可重用,因此模型作为参数传递。
<input model="vm.model.code" ng-change="vm.removeInvalidCharacters(vm.model.code)" />
和JS
vm.removeInvalidCharacters = function(text) {
text = text.replace(/ /g, '');
};
我在 airbnb javascript style guide 上读过,这是一种不好的做法,我们应该返回该值。确切地说,我们不应该“改变参数”(永远不要重新分配参数)。什么是正确的方法,并且仍然保持可重用功能?
解决方案
ng-change
是一个指令,每次通过模板对模型进行更改时都会触发该指令。
在您的代码中,您将变量“text”声明为值为“vm.model.code”的参数。但是您正在对局部变量“文本”进行更改,而不是在模板中使用的变量中
改用这个:
vm.removeInvalidCharacters = function(text) {
vm.model.code = text.replace(/ /g, '');
};
编辑:
如果您要查找的是将变量作为引用而不是参数传递,请检查此答案: Pass $scope variable to function by reference
推荐阅读
- flutter - 展平多个流,仅包含最后一个流的事件
- javascript - Javascript 文本编辑器按 A4 页面拆分
- java - 遇到 java.nio.file.InvalidPathException: Illegal char <:>
- javascript - 在 D3 geoNaturalEarth1 地图上绘制点
- javascript - 如果键是数字,它会在从 JSON 创建的表中自动对齐到左侧
- laravel - 访问主页时重定向到另一个页面
- systemd - 动态用户 UID 未知的 systemd
- javascript - AngularJS中多个输入的谷歌地址自动完成
- python - 使用 selenium 在文本字段中设置值。selenium.common.exceptions.NoSuchElementException:消息:无法找到元素:
- c# - AutoMapper:来自同名成员的用户小写值