有没有人成功在Meteor中创建了键绑定?

时间:2014-09-29 01:16:57

标签: javascript meteor

我一直试图在Meteor中实现键绑定一段时间。我尝试了以下包:

https://github.com/matteodem/meteor-keybindings

但无论我做什么,它都会说方法(例如添加键绑定)是未定义的。所以我在考虑使用另一种方法。

有没有人成功在Meteor中创建了键绑定?比如说,按alt + a触发事件?

2 个答案:

答案 0 :(得分:2)

如果您指的是页面上任何位置的键事件,而不仅仅是输入字段内部,我使用下面的方法将这些回调添加到窗口中。然后你必须在关闭该路线时手动删除它们。

Mac上的

,控制键等只是用于发送不同的密钥代码。 然而,我还没有在Windows上取得成功 - 在这里没有机器进行测试和尝试,似乎没有引出关键的反应。但是我认为这更像是一个与流星有关的jquery /浏览器。如果您在Windows上找到Ctrl-S等(或alt-S)的有用密钥代码,请告诉我们。

onRun和onStop应该只调用一次,但我发现事件是铁的;路由器有点不可预测,所以值得在你自己的initDone = true / false的检查中添加。

#coffeescript 

#--- router
  Router.map ->

    @route 'myTemplate',
      path: '/some/path'

      onRun: ->
        Template.komikPlayer.initScene()

      onStop: ->
        Template.komikPlayer.exitScene()

然后在相关视图模板中有init和exit事件来设置/拆除关键事件

    Template.myTemplate.initScene = () ->
      addKeyEvents()

    Template.myTemplate.exitScene = () ->
      removeKeyEvents()

    addKeyEvents = () ->
      console.log('addKeyEvents')
      $(window).on 'keydown', (e) -> handleKeys(e)

    handleKeys = (e) ->
      switch e.keyCode
        when 69
          console.log('edit')
          url = "/komikEditScene/#{comic.data.params.chapter}/#{comic.data.params.scene}"
          window.open(url, 'editor')
        when 39, 32, 13 # next
          navTo("#nextField")
        when 37 # back
          navTo("#backField")
        else
          console.log('unused key:', e.keyCode)

答案 1 :(得分:1)

不确定这是否有用,但我在js文件的事件区域使用简单的按键检测。这仅在选择输入字段时有效。

//keypress input detection for autofilling form with test data

    'keypress input': function(e) {

        if (e.which === 17) { //17 is ctrl + q

            fillForm();

        }

    }
相关问题