Ionic,Angular在按键事件

时间:2016-01-27 01:48:07

标签: javascript angularjs ionic-framework

我尝试在其中一个输入框的按键期间调用一个事件,但不知道如何传递输入框的值。

我就是这样做的,最后得到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的正确方法是什么?

1 个答案:

答案 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)">