Остановить событие гиперссылки в Spine.js - PullRequest
1 голос
/ 12 декабря 2011

Я определил событие в контроллере Spine.js, как в CoffeeScript:

class Charter extends Spine.Controller
    events:
        'tap    #update':   'update'

    constructor: (params) ->
        super

    update: (e) ->
        dosomething()
        false

При нажатии на ссылку #update вызывается функция обновления, но ссылка также активируется инаправляет браузер на URL.

Я пробовал e.preventDefault (), e.stopPropagation () и возвращает false, но безрезультатно.Кажется, что событие правильно сформировано, а currentTarget является ссылкой #update, поэтому мне интересно, не является ли это чем-то уникальным в том, как Spine обрабатывает событие (у меня не было проблем с этим в Backbone.js)

Ответы [ 2 ]

1 голос
/ 14 декабря 2011

events должен работать вместе с el, но я не нашел вас el определение.

попробуйте это:

class Charter extends Spine.Controller
    el: 'body'

    events:
        'tap    #update':   'update'

    constructor: (params) ->
        super

    update: (e) ->
        dosomething()
        false
0 голосов
/ 20 декабря 2011

В файле spine's touch.coffee этот код вызывает следующий код:

if $.support.touch
  $('body').bind 'click', (e) -> 
    e.preventDefault()
else
  $ -> 
    $('body').bind 'click', (e) -> 
      $(e.target).trigger('tap')

Мобильное устройство не получает ни одного из событий click, которые вызвали бы hyperlinks, или отправляли события при нажатии кнопки отправки собственной формы (go на клавиатуре iOS).

Единственное решение, которое я смог найти, это вообще не использовать tap события и использовать click - даже для мобильных браузеров.

Очевидно, что это не оптимально, и я стремлюсь к лучшему решению.

...