我对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中工作。 有任何想法甚至指示在哪里进行调查?
答案 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”时它停止在桌面浏览器上工作,所以多个动作是关键