我想在angularJs应用程序中实现一个搜索框.一旦用户开始在搜索框中键入一些名称,就应该调用一些REST服务,它应该获取与搜索文本框中键入的名称相匹配的所有名称.请注意,没有按钮,一旦用户开始输入,结果就会自动出现.REST服务已经存在.我只需要在用户开始输入时调用REST服务并将结果作为列表返回.例如: - 如果我输入James,那么名字以James开头的所有用户都应该作为搜索框中的列表.
一旦名称列表到来,用户可以单击其中一个名称,并且应该在当前页面中加载他的信息.
如何在角度js中实现这种类型化的搜索框?对它有任何指示吗?任何人都可以给我一些方向.
Jor*_*ola 30
您应该定义一个监听onkeypress的指令.
app.directive('myOnKeyDownCall', function () {
return function (scope, element, attrs) {
element.bind("keydown keypress", function (event) {
scope.$apply(function (){
scope.$eval(attrs.ngEnter);
});
event.preventDefault();
});
};
});
Run Code Online (Sandbox Code Playgroud)
HTML
<input type="text" my-on-key-down-call="callRestService()">
Run Code Online (Sandbox Code Playgroud)
CONTROLLER
$scope.callRestService= function() {
$http({method: 'GET', url: '/someUrl'}).
success(function(data, status, headers, config) {
$scope.results.push(data); //retrieve results and add to existing results
})
}
Run Code Online (Sandbox Code Playgroud)
很高兴等到键入3个键,对于指令中的键:
var numKeysPress=0;
element.bind("keydown keypress", function (event) {
numKeysPress++;
if(numKeysPress>=3){
scope.$apply(function (){
scope.$eval(attrs.myOnKeyDownCall);
});
event.preventDefault();
}
});
Run Code Online (Sandbox Code Playgroud)
也许,你可以使用angular-ui存在typeahead指令: angular-ui typeahead 我希望它可以帮助你
发现这是对已接受答案的简化.
// Directive
app.directive('search', function () {
return function ($scope, element) {
element.bind("keyup", function (event) {
var val = element.val();
if(val.length > 2) {
$scope.search(val);
}
});
};
});
// In Controller
$scope.search= function(val) {
// fetch data
}
// HTML
<input type="text" search>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73062 次 |
| 最近记录: |