使用Underscore.js模板单击未在PhoneGap / Backbone.js中触发的事件

时间:2012-09-29 11:04:40

标签: iphone cordova backbone.js underscore.js cordova-2.0.0

我一直在使用backbone.js创建一个Phonegap / Cordova 2.0应用程序,直到我尝试构建一个表单时,一切都很好。将显示该表单,但单击事件不会触发键盘。

我玩过不同的事件,发现添加ontouchstart="this.focus()"会让键盘变好。我在view函数中添加了一个catchall来引起焦点:

window.PageView = Backbone.View.extend({

    initialize: function() {
        this.template = _.template(tpl.get('page'));
    },

    render: function(eventName) {
        $(this.el).html(this.template(this.model.toJSON()));
        $('input', $(this.el)).bind('touchstart',function(event) {
            $(this).focus();
        });
        return this;
    }

});

但即使这样,如果我将bind('touchstart'...更改为'click',也不会触发。

我找到了其他一些帖子,例如:click event doesn't fire in an underscore template

这表明它与underscore.js模板化过程有关,但没有什么是非常明确的。

我想我可以在touchstart上制作一个计时器功能来模拟这个,但它有点神秘,所以我想知道发生了什么。

感谢。

2 个答案:

答案 0 :(得分:0)

试试这个:

this.$(':input').bind(...)

答案 1 :(得分:0)

事实证明,导致问题的是iScroll。

            onBeforeScrollStart: function (e) { e.preventDefault(); },

具体而言。我刚刚评论了e.preventDefault();并且它很有效!