У меня есть значение в поле ввода, которое необходимо отправить на сервер для извлечения связанных значений и для отображения в виде выпадающего списка ниже.
Вызов api должен запускаться в трех условиях после того, как пользователь ввел значение
Ниже приведена разделенная версия кода, который у меня есть без вызовов api. Я также создал кодекс для этого
<html ng-app="myApp">
<head>
<title>Angular</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>
</head>
<body ng-controller="MyCtrl">
<input type="text" ng-model="name"
ng-change="actualWork('ngChange')" enter-key="actualWork('enterKey')" ng-model-options="{debounce : 3000}"/>
<button ng-click="actualWork('click')">Do Work</button>
{{message}}
<script>
angular.module('myApp',[]);
angular.module('myApp')
.controller('MyCtrl',function($scope){
$scope.name = "Test";
$scope.actualWork = function(source){
$scope.message = $scope.name + " from "+source;
}
});
angular.module('myApp')
.directive('enterKey', function () {
return function (scope, element, attrs) {
element.bind("keydown keypress", function (event) {
if (event.which === 13) {
scope.$apply(function () {
scope.$eval(attrs.enterKey);
});
event.preventDefault();
}
});
};
});
</script>
</body>
</html>
В приведенном выше коде ng-change будет запущен даже независимо от того, нажимает ли пользователь кнопку или вводит ключ.
Кто-нибудь дает мне знать, как остановить ng-change от стрельбы, если нажать кнопку ввода /?
благодаря
http://codepen.io/ehmssss/pen/EyJmVE?editors=1010#anon-signup
<html ng-app="myApp">
<head>
<title>Angular</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>
</head>
<body ng-controller="MyCtrl">
<form ng-submit="actualWork('enter')">
<input type="text" ng-model="name"
ng-change="actualWork('ngChange')" ng-model-options="{debounce : 5000}"/>
</form>
<button type='submit' ng-click="actualWork('click')">Do Work</button>
{{message}}
</body>
я отделил кнопку и добавил форму submit