在AngularJS输入中的@符号后填写完整的电子邮件域

Whi*_*gel 8 javascript angularjs

我正在尝试创建一个功能,该功能将自动检测用户是否键入了"@"符号,并将使用公司域自动填充该字段.页面上可能有多个字段,这就是我不想对其模型进行硬编码的原因(例如$scope.user.email).
这是'到目前为止我所得到的:

<input ng-model="user.email" ng-keyup="autocompleteEmail($event);">
Run Code Online (Sandbox Code Playgroud)

和相应的控制器代码:

$scope.autocompleteEmail = function($event) {
    if (($event.keyCode === 48 || $event.keyCode === 50) && $event.srcElement.value.slice(-1) === "@") {
      // @ symbol is typed - completing email
      $event.srcElement.value += "mycompany.com";
    }
}
Run Code Online (Sandbox Code Playgroud)

自动完成工作正常,但一旦我尝试使用此新值提交表单时问题就出现了 - 它没有考虑我自动添加的mycompany.com域.并且正在发送的请求有user.email = test@.

如何使用AngularJS实现此自动完成功能?

Luc*_*uez 0

您可以将user变量作为方法中的参数传递,以便可以重用:

 <input ng-model="user.email" ng-keyup="autocompleteEmail($event, user);">
Run Code Online (Sandbox Code Playgroud)

并注意该参数:

  $scope.autocompleteEmail = function($event, user) {
       if (($event.keyCode === 48 || $event.keyCode === 50) &&        $event.srcElement.value.slice(-1) === "@") {
  // @ symbol is typed - completing email
  user.email  += "mycompany.com";
}
Run Code Online (Sandbox Code Playgroud)

试试这个笨蛋