Emberjs div不会触发点击事件动作

时间:2015-07-06 21:55:30

标签: javascript jquery css cordova ember.js

我对Ember很新,但这个看起来很奇怪。

我在模板上看到了这样的div:

<div {{action "selectItem" item target="controllers.items"}}> Hello there! </div>

在我的控制器上,我有一个简单的动作回调:

WebComponent.ItemController  = Ember.ArrayController.extend(Ember.Evented, {
needs: ["settings"],

actions: {
    selectItem: function (item) {
        //This here won't fire unless I attach it to a <button> not a <div>
    },

    refreshList: function () {
        //blah
    },
    ...
    }
},

... } ...

在完全披露中,我正在使用模拟器在Phonegap中工作。 有任何想法甚至指示在哪里进行调查?

3 个答案:

答案 0 :(得分:6)

我弄明白了这个问题。看起来Ember没有将点击事件转换为自动触摸事件(Ember 1.8),因为div,span,li等标签似乎对按钮这样的标签这样做。因此,解决方案是添加一个属性以将事件映射到操作。在您的操作中使用 on 属性。

<div {{action "selectItem" item on="touchEnd" target="controllers.items"}}> Hello there! </div>

答案 1 :(得分:2)

某些浏览器/设备无法使用非标准的可点击DOM元素正常工作。考虑使用链接标记<div />封装<a>,并将click事件添加到A元素。

<a {{action "selectItem" item target="controllers.items"}}><div></div></a>

第二个选项(适用于iPad的Safari适用于将光标设置为指针。

<div style="cursor: pointer"></div>

答案 2 :(得分:0)

这个回答是关于Vincent Gauthier的评论https://github.com/emberjs/ember.js/pull/11373

<button {{action 'process'}} {{action 'process' on="touchEnd"}}>Submut</button>

这对我非常有帮助,因为当我尝试只放置=“touchEnd”时它停止在桌面浏览器上工作,所以多个动作是关键