首页 > 解决方案 > 使用参数更新输入值

问题描述

我正在尝试在更改时替换输入中的任何空格。我正在使用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 上读过,这是一种不好的做法,我们应该返回该值。确切地说,我们不应该“改变参数”(永远不要重新分配参数)。什么是正确的方法,并且仍然保持可重用功能?

标签: javascriptangularjs

解决方案


ng-change是一个指令,每次通过模板对模型进行更改时都会触发该指令。

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

改用这个:

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

编辑:

如果您要查找的是将变量作为引用而不是参数传递,请检查此答案: Pass $scope variable to function by reference


推荐阅读