Angularjs:如何在没有ng-model的情况下获得输入值

时间:2017-06-05 12:31:21

标签: angularjs angularjs-ng-model

我需要通过ng-repeat进行一些输入,并且在我的json文件中,我在对象中有一个名为name的属性,如下所示:

"url":"find_company",
    "values":[
      {
        "name":"company name",
        "type":"input_search"
      },{
        "name":"company_phone",
        "type":"input_search"
      }
    ]

我想在DB中进行搜索,在搜索中您可以通过任何字段或两个或多个字段找到。字段称为对象的属性相同。所以通过ng-keyup我需要发送到我的函数

search(field, value)

两个论点。我想做这样的事情

<div ng-repeat="value in param.values">
    <input ng-if="value.type == 'input_search'" 
           ng-keyup="search(value.name, this.text)" 
           type="text">

如何在不使用ng-model的情况下发送此输入的功能文本?其中this.text是输入值。

3 个答案:

答案 0 :(得分:4)

由于您使用的是ng-keyup,因此您可以使用$event.target.value检索输入值。

评论:this适合onclick等普通事件,但不适合angular

参考以下示例。

&#13;
&#13;
angular.module("app", [])
  .controller("myCtrl", function($scope) {
    $scope.showValue = function(val) {
      alert(val);
    }
  });
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<div ng-app="app" ng-controller="myCtrl">
  <input type="test" ng-keyup="showValue($event.target.value)">
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

我知道问题是没有使用ng-model。但我怀疑你可能想要这个,因为你想在数据绑定发生时进行自定义。如果是这种情况,您可以ng-model-options使用ng-change

<input type="text" ng-model="yourModel" ng-model-options="{ updateOn: 'keyup' }" ng-change="search()" />
模型更新后会发生

ng-change,在这种情况下,keyup之后会更新。因此,当yourModel执行时,search()的值将是最新的。

答案 2 :(得分:0)

这就是 ngModel

的用法
<div ng-repeat="value in param.values">
    <input ng-if="value.type == 'input_search'" ng-model="value.val" ng-keyup="search(value)" type="text">

在你的控制器中:

$scope.search = function( item ) {
    console.log( item.val ); // Here you have the value using ngModel
    console.log( item.name ); // Here you have the "name" property of the element inside the loop
}

如您所见,您可以使用ngModel并将对象本身传递给该函数,您可以从控制器中的函数访问其属性。

请注意,视图中有this.text - 我不知道它究竟是什么,所以我将其从示例中删除以使事情更清晰,但您可以在代码当然。