聚合物:延迟值改变执行

时间:2015-10-26 15:39:44

标签: javascript polymer

得到一个简单的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毫秒之后。

1 个答案:

答案 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);
}