【发布时间】:2014-03-29 02:53:38
【问题描述】:
我有一个race-items 列表,每个都呈现为一个视图:
<ul>
{{#each race in controller}}
{{render "race-item" race class="race-item"}}
{{else}}
<li id="imagine">{{#link-to 'races.create'}}Imagine Faster{{/link-to}}</li>
{{/each}}
</ul>
在视图类中,我想使用点击事件来切换属性:
App.RaceItemView = Ember.View.extend({
tagName: 'li',
templateName: 'raceItem',
classNameBindings: ['isSelected:selected'],
isSelected: false,
click: function(e) {
this.set('isSelected', true);
}
});
这个点击事件似乎不会触发,除非它是通常处理点击的 DOM 元素(a、button 等)。
我怎样才能在我的li 上获得点击触发?我将所有内容都包装在锚点中,因为子元素具有自己的事件和动作。
后续问题:似乎即使我的点击工作正常,它只会将当前视图的 isSelected 属性设置为 true,但不会将其余视图属性切换为 false。实现这一点的提示?
谢谢。我快死了。
【问题讨论】:
-
点击事件应该在
- 和其他通常不可点击的元素上起作用。你能重现一个基本的小提琴来证明这一点吗?您可以使用这个小提琴作为基础:jsfiddle.net/NQKvy/790
-
要将其余视图属性切换为 false,您可以将视图中的操作发送到 arrayController
this.get('controller').send('selected'),您可以在其中设置父 arrayController 中的选定项。观察该属性的变化并将所有其他项目设置为false。我可以举一个例子,如果你有一个小提琴可以解决另一个问题,或者最好将它作为一个单独的问题提出,这样人们就可以回答一个或另一个。 -
我无法在垃圾箱中重现该问题。我对 Ember 很陌生,因为数据设置不同(我使用的是本地存储适配器),所以我无法渲染任何东西。无论如何,我的
- 上的点击事件肯定不会触发(甚至不会将任何内容记录到控制台)。这可能与我使用
render有关吗?我已经尝试剥离模板以删除所有其他操作和事件,但它似乎没有任何区别。 - 上的点击事件肯定不会触发(甚至不会将任何内容记录到控制台)。这可能与我使用
标签: javascript ember.js