0

フィドル:

http://jsfiddle.net/lifeinafolder/mpcRr/

基本的に、現在の「表示」アイテムを非表示にして次のアイテムを「表示」にしたいのですが、togglePropertyがchildViewオブジェクトで機能していないようです。サイレントに失敗し、エラーもスローされません。

4

2 に答える 2

2

CollectionViewは、コレクション内のすべてのアイテムを表示しますが、これは必要なものではありません。コレクションを格納し、次のボタンを表示する標準ビューと、コンテナービューが選択したスライドをスライドビューのコンテンツとして設定したときに選択したスライドを表示するスライドビューを実装します。

于 2012-07-06T18:53:11.843 に答える
0

非常に醜い解決策で、ほとんど機能しています。ビューを切り替える方法を維持しました。

テンプレートは同じで、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);

フィドル:

http://jsfiddle.net/Sly7/dd6at/

于 2012-07-05T21:51:08.623 に答える