Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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 未从电子邮件输入标记触发ng按键事件_Javascript_Angularjs - Fatal编程技术网

Javascript 未从电子邮件输入标记触发ng按键事件

Javascript 未从电子邮件输入标记触发ng按键事件,javascript,angularjs,Javascript,Angularjs,我正在试验angular JS,并试图让ng按键事件正常工作。我的HTML如下所示: <form accept-charset="UTF-8" action="/orders" class="new_order" id="new_order" method="post" ng-controller="OrderCreateController"> <div class="new-invitee"><input id="new_invitee" name="ne

我正在试验angular JS,并试图让
ng按键
事件正常工作。我的HTML如下所示:

<form accept-charset="UTF-8" action="/orders" class="new_order" id="new_order" method="post" ng-controller="OrderCreateController">
   <div class="new-invitee"><input id="new_invitee" name="new_invitee" ng-keyup="addNewInvitee($event)" placeholder="Add email addresses here..." required="required" type="email" /></div>
</form>
但是控制器方法永远不会被调用。你知道为什么吗?

你有两个选择

选项1:从表单标签中删除“action=“/orders””,所有运行正常

选项2:将代码改写为:

app.controller('OrderCreateController', function($scope, $http, $element) {
  $scope.invitees = [];
  return $scope.addNewInvitee = function($event) {
    $event.preventDefault(); // stripped return from the preventDefault and moved to the top. 
    var el, isValid;
    isValid = $event.target.validity.valid;
    el = angular.element($event.target.parentElement);
    el.toggleClass('valid', isValid);
    el.toggleClass('invalid', !isValid);
    if ($event.which !== 13 || !isValid) {
      return;
    }
    $scope.invitees.push({
      name: $event.target.value
    });
    console.log("I just ran!", $scope.invitees); // Sanity check
  };
});
在我这方面,这两个选项都运行得很好,希望一切都能为您解决


祝你好运:)

我认为addNewInvitee需要是一个指令谢谢@koolunix它确实是一个指令,但奇怪的是ng keypress、ng keyup和ng keydown在这种情况下不起作用。嗨,谢谢你的输入。我的问题是根本没有调用
addNewInvitee
方法。您建议的任何更改似乎都无法解决该问题,但我很想知道从表单标记中删除“action=“/orders”会产生什么影响?删除“action=“/orders”会使表单标记没有默认事件,因此在本文中,这将是另一种说“preventDefault”的方式。就我而言,这是最终的结果。我很好奇,为什么这对我来说效果很好,而对你来说效果不太好。可能是个愚蠢的问题,但如果我可以问的话,你使用的是什么版本的Angular?
app.controller('OrderCreateController', function($scope, $http, $element) {
  $scope.invitees = [];
  return $scope.addNewInvitee = function($event) {
    $event.preventDefault(); // stripped return from the preventDefault and moved to the top. 
    var el, isValid;
    isValid = $event.target.validity.valid;
    el = angular.element($event.target.parentElement);
    el.toggleClass('valid', isValid);
    el.toggleClass('invalid', !isValid);
    if ($event.which !== 13 || !isValid) {
      return;
    }
    $scope.invitees.push({
      name: $event.target.value
    });
    console.log("I just ran!", $scope.invitees); // Sanity check
  };
});