我尝试在其中一个输入框的按键期间调用一个事件,但不知道如何传递输入框的值。
我就是这样做的,最后得到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>
将数据传递给angular的正确方法是什么?
答案 0 :(得分:1)
<强> 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);
}
});
每次按键都会触发bySearch()函数。
ng-keypress在按下键时发生,并且在值填充输入之前。这就是为什么你没有在第一次按键上获得任何价值,但在随后的按下你将获得价值。
您也可以使用ng-keyup
<input type="text" ng-model="dash.search" placeholder="Search" ng-keyup="bySearch(dash.search)">