小提琴:通过的CollectionView操纵ItemView控件
http://jsfiddle.net/lifeinafolder/mpcRr/
从本质上讲,我想隐藏当前“看得见”的项目,使下一个“看得见”,但toggleProperty似乎并没有工作在childView目的。它只是默默地失败,并没有抛出任何错误。
小提琴:通过的CollectionView操纵ItemView控件
http://jsfiddle.net/lifeinafolder/mpcRr/
从本质上讲,我想隐藏当前“看得见”的项目,使下一个“看得见”,但toggleProperty似乎并没有工作在childView目的。它只是默默地失败,并没有抛出任何错误。
一个相当不好的解决方案,几乎工作。我保持切换视图的方式。
模板是一样的,JS是这样的:
App = Ember.Application.create();
App.slides = Ember.ArrayProxy.create({
content:[]
});
App.slidesCollectionView = Ember.CollectionView.extend({
contentBinding:"App.slides",
tagName:'div',
emptyView: Ember.View.extend({
template: Ember.Handlebars.compile("<div class=\"placeholder\">placeholder</div>")
}),
itemViewClass:"App.slideView",
classNames:["slideshow"],
click:function(){
var t = Ember.ArrayProxy.create({ content: this.get('childViews') });
var selected = t.findProperty('isVisible', true);
if(selected){
var nextSlide = t.objectAt(selected.get('contentIndex') + 1);
selected.set('isVisible', false);
if(nextSlide){
nextSlide.set('isVisible', true);
}else{
t.get('firstObject').set('isVisible', true);
}
}else{
t.get('firstObject').set('isVisible', true);
}
}
});
App.slideView = Ember.View.extend({
templateName: 'slide-item',
tagName:'div',
isVisible: false,
classNames:['slide'],
classNameBindings:['isVisible:selected']
});
setTimeout(function(){
App.slides.pushObjects([
Ember.Object.create({val:'a',index:0}),
Ember.Object.create({val:'b',index:1}),
Ember.Object.create({val:'c',index:2}),
Ember.Object.create({val:'d',index:3}),
Ember.Object.create({val:'e',index:4}),
Ember.Object.create({val:'f',index:5})
])},2000);
小提琴:
一个的CollectionView将显示集合中的所有项目,这是不是你想。我将实现一个标准视图,该视图容纳集合并显示下一个按钮和其中的幻灯片视图,当容器视图将选定幻灯片设置为幻灯片视图上的内容时,将显示所选幻灯片。
你的小提琴不起作用。事实上,带'a'的初始childView也没有显示出来。 – Rajat 2012-07-06 03:10:10
@Rajat“它几乎可行”。事实上,所有的视图都是用isVisible = false初始化的。但是,如果您在占位符消失时单击,我认为它很好。 – 2012-07-06 06:28:17