我有一个带有视图和控制器的Ember应用程序:
http://jsfiddle.net/gavriguy/EDr4G/
我想通过更改相关模型来标记用户点击的当前项目。 我现在能够通过计算项目的视图索引来做到这一点 - 但问题是我无法确定视图上的索引是否与其控制器上的索引相同。 有什么想法吗?
的JavaScript :
App.tempController = Em.ArrayController.create({
content: [
{
title: 'A',
unread: true},
{
title: 'B',
unread: true},
{
title: 'C',
unread: false}
]
});
App.someItemsView = Ember.CollectionView.create({
contentBinding: 'App.tempController.content',
itemViewClass: Ember.View.extend({
template: Ember.Handlebars.compile('<div>{{content.title}} unread: {{content.unread}}</div>'),
click: function(event) {
//How to mark current clicked item as read?
console.log(this.content);
console.log(event);
this.set('content.unread', false);
}
})
});
答案 0 :(得分:2)
在click
处理程序中,您可以通过this.get('content')
获取对其呈现视图的数组项的引用。因此,您可以通过this.setPath('content.unread', false)
设置标记,请参阅http://jsfiddle.net/pangratz666/t6Nst/:
itemViewClass: Ember.View.extend({
template: Ember.Handlebars.compile('<div>{{content.title}} unread: {{content.unread}}</div>'),
click: function(event) {
// this.content is the item in the array on which this click event occures.
this.setPath('content.unread', false);
}
})