我需要通过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
是输入值。
答案 0 :(得分:4)
由于您使用的是ng-keyup
,因此您可以使用$event.target.value
检索输入值。
评论:this
适合onclick
等普通事件,但不适合angular
。
参考以下示例。
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;
答案 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
- 我不知道它究竟是什么,所以我将其从示例中删除以使事情更清晰,但您可以在代码当然。