Я пытаюсь вызвать событие во время нажатия клавиши в одном из полей ввода, но не уверен, как передать значение поля ввода.
Вот как я это делаю и получаю undefined
в конце.
controller.js
$scope.bySearch = function(descr){
var xhr = $http({
method: 'post',
url: 'http://mywebsite.com/api/lists.php?descr='+descr
});
xhr.success(function(data){
$scope.data = data.data;
});
$ionicScrollDelegate.scrollTop();
console.log(descr);
}
sample.html
<label class="item item-input">
<i class="icon ion-search placeholder-icon"></i>
<input type="text" ng-model="dash.search" placeholder="Search" ng-keypress="bySearch(dash.search)">
</label>
Каков правильный способ передачи данных в угловой?
sample.html
<div ng-controller="SearchCtrl">
<label class="item item-input">
<i class="icon ion-search placeholder-icon"></i>
<input type="text" ng-model="dash.search" placeholder="Search" ng-change="bySearch(dash.search)">
</label>
</div>
controller.js
var routerApp = angular.module('routerApp', ['ui.router', 'ngRoute']);
routerApp.controller('SearchCtrl', function($scope, $http) {
$scope.bySearch = function(descr){
alert("Inside bySearch--"+descr);
var xhr = $http({
method: 'post',
url: 'http://mywebsite.com/api/lists.php?descr='+descr
});
xhr.success(function(data){
$scope.data = data.data;
});
$ionicScrollDelegate.scrollTop();
console.log(descr);
}
});
Это приведет к срабатыванию функцииSearch() для каждого нажатия клавиши.
ng-keypress происходит при нажатии клавиши и до того, как значение заполняет вход. Вот почему вы не получаете никакой ценности при первом нажатии клавиши, но при последующих нажатиях вы получите значение.
Вы также можете использовать ng-keyup
<input type="text" ng-model="dash.search" placeholder="Search" ng-keyup="bySearch(dash.search)">