得到一个简单的Polymer模板,其中包含:
function controllerClass($scope, $ionicSlideBoxDelegate) {
$scope.slide = function() {
$ionicSlideBoxDelegate.next();
console.log("Click");
}
}
和JS:
<paper-input floatingLabel label="Suche" value="{{search}}" error-message="Invalid input!"></paper-input>
因此,每次更改值时,都会使用新URL查询服务器。这很好,但是我希望将请求延迟到服务器大约500毫秒,以便在用户输入的每个输入之后不进行搜索,但是在他停止输入500毫秒之后。
答案 0 :(得分:4)
您可以使用聚合物提供的debounce
对多个事件侦听器进行分组。
去抖(jobName,回调,[等待])。召唤去抖动崩溃 将命名任务的多个请求放入一个调用中 在等待时间过去之后没有新的请求。如果没有等待时间 给出,回调在微任务时间调用(保证是 在油漆之前)。
您可以阅读更多相关信息https://www.polymer-project.org/1.0/docs/devguide/utility-functions.html
在您的情况下,以下修改应该有效:
properties : {
search : {
type : String,
notify : true,
observer : 'searchChanged'
}
},
_getData: function() {
this.$.searchAjax.url = '/search/' + this.search;
this.$.searchAjax.generateRequest();
},
searchChanged : function() {
this.debounce('getDataDebouce', this._getData, 500);
}