使用coffeescript延迟(去抖)ajax请求
我在我的rails应用程序中使用CoffeeScript,我需要延迟远程ajax表单提交,我遇到的主要问题是去除请求,以便表单将在250ms已经过去而没有用户输入表单时发送。
现在我有一些看起来像这样的东西,显然它不会工作所以这里有一些调试输出来帮助我。
看看下面的表格,你应该知道我想要“去抖”的function是在element.keyup (event) ->
function中,任何帮助都会很棒!
remoteTable = bindEvents: (element) -> element.keyup (event) -> console.log(event) send: (event) -> console.log(event)
**如果我能收集一些如何运作的例子,那将会非常有用吗? **我确实看到了underscore.js的方式,但是在这里,这是我的老方法:我无法解决这个问题:
http://davidwalsh.name/function-debounce
你可以使用一个简单的超时,不需要花哨。
remoteTable = bindEvents: (element) -> timeout = null element.keyup (event) -> clearTimeout(timeout) timeout = setTimeout(remoteTable.send, 250) send: -> console.log('Sending request...')
我在coffeescript.org上玩,他们有一个在线“尝试coffeescript”翻译/跑步者,似乎
remoteTableOrg = bindEvents: (element) -> element.keyup (event) -> console.log(event) send: (event) -> console.log(event)
翻译成
var remoteTableOrg; remoteTableOrg = { bindEvents: function(element) { return element.keyup(function(event) { return console.log(event); }); }, send: function(event) { return console.log(event); } };
所以element.keyup
实际上是一个函数调用,函数作为参数。
看到这个,我试过了
remoteTable = bindEvents: (element) -> element.keyup _.debounce((event) -> console.log(event) ,250) send: (event) -> console.log(event)
得到了:
var remoteTable; remoteTable = { bindEvents: function(element) { return element.keyup(_.debounce(function(event) { return console.log(event); }, 250)); }, send: function(event) { return console.log(event); } };
我没有尝试过这个,但我不知道为什么这不起作用。 我不得不承认没有用coffeescript做太多,但看起来很简单。
- 将HTML返回给AJAX Rails调用
- Dojo + Rails 3.2.8 + CoffeeScript
- Rails,CoffeeScript和ERB
- Rails 3.1。 如何防止Rails使用CoffeScript?
- 在HAML模板中使用:coffescriptfilter的性能影响?
- Rails 4 jQuery,javascript和咖啡脚本无法正常工作
- Rails 3.1 Ajax问题
- Marionette CompositeView为Collection中的每个Model而不是ItemView(Marionette Rails)渲染自己
- 如何配置Rails 3.2 + / 4以生成.js而不是.js.coffee默认情况下?