Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 通过CollectionView操作itemView_Ember.js - Fatal编程技术网

Ember.js 通过CollectionView操作itemView

Ember.js 通过CollectionView操作itemView,ember.js,Ember.js,小提琴: 本质上,我想隐藏当前的“可见”项,并使下一个“可见”,但toggleProperty似乎不适用于childView对象。它只是默默地失败,也不会抛出错误。一个相当丑陋的解决方案,几乎可以正常工作。我一直保持着交换意见的方式 模板相同,js如下所示: App = Ember.Application.create(); App.slides = Ember.ArrayProxy.create({ content:[] }); App.slidesCollectionView

小提琴:


本质上,我想隐藏当前的“可见”项,并使下一个“可见”,但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);
App=Ember.Application.create();
App.slides=Ember.ArrayProxy.create({
内容:[]
});
App.slidescolectionview=Ember.CollectionView.extend({
contentBinding:“应用程序幻灯片”,
标记名:'div',
emptyView:Ember.View.extend({
模板:Ember.handlebar.compile(“占位符”)
}),
itemViewClass:“App.slideView”,
类名:[“幻灯片放映”],
单击:函数(){
var t=Ember.ArrayProxy.create({content:this.get('childview'));
所选var=t.findProperty('isVisible',true);
如果(选定){
var nextSlide=t.objectAt(selected.get('contentIndex')+1);
选中。设置('isVisible',false);
if(nextSlide){
nextSlide.set('isVisible',true);
}否则{
t、 get('firstObject').set('isVisible',true);
}
}否则{
t、 get('firstObject').set('isVisible',true);
}            
}
});
App.slideView=Ember.View.extend({
templateName:“幻灯片项目”,
标记名:'div',
isVisible:false,
类名:[“幻灯片”],
classNameBindings:['isVisible:选定']
});
setTimeout(函数(){
App.slides.pushObjects([
create({val:'a',index:0}),
create({val:'b',index:1}),
create({val:'c',index:2}),
create({val:'d',index:3}),
create({val:'e',index:4}),
create({val:'f',index:5})
])},2000);
小提琴:


收藏视图将显示收藏中的所有项目,这不是您想要的。我将实现一个标准视图,其中包含收藏并显示“下一步”按钮,以及一个幻灯片视图,当容器视图将所选幻灯片设置为幻灯片视图上的内容时,该视图将显示所选幻灯片。

您的小提琴不起作用。实际上,带有“a”的初始儿童视图也没有显示。@Rajat“它几乎可以工作”。事实上,所有视图都是用isVisible=false初始化的。但是如果你在占位符消失时点击,我想没关系。