フィドル:
http://jsfiddle.net/lifeinafolder/mpcRr/
基本的に、現在の「表示」アイテムを非表示にして次のアイテムを「表示」にしたいのですが、togglePropertyがchildViewオブジェクトで機能していないようです。サイレントに失敗し、エラーもスローされません。
フィドル:
http://jsfiddle.net/lifeinafolder/mpcRr/
基本的に、現在の「表示」アイテムを非表示にして次のアイテムを「表示」にしたいのですが、togglePropertyがchildViewオブジェクトで機能していないようです。サイレントに失敗し、エラーもスローされません。
CollectionViewは、コレクション内のすべてのアイテムを表示しますが、これは必要なものではありません。コレクションを格納し、次のボタンを表示する標準ビューと、コンテナービューが選択したスライドをスライドビューのコンテンツとして設定したときに選択したスライドを表示するスライドビューを実装します。
非常に醜い解決策で、ほとんど機能しています。ビューを切り替える方法を維持しました。
テンプレートは同じで、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);
フィドル: