0

我正在尝试在 Ember 中创建应用程序的一部分,其中一个视图中将有多个出口,并且每个出口都将连接到一个 collectionView。问题似乎是第二个出口变得“散落”着第一个的变量。

现在我正在做的是更多的参与,但是: 这是简化问题的一个小提琴

有 3 个车把模板: 应用程序

{{outlet dogs}}
{{outlet cats}}

Cat:{{view.content.name}}

小狗

Dog:{{view.content.name}}

应用程序模板中的插座是连接的:

index:Em.Route.extend({
    route:'/',
    connectOutlets:function(router, context){

        router.get('applicationController').connectOutlet('cats', 'catsCollection');
        router.get('applicationController').connectOutlet('dogs', 'dogsCollection');
    }, 
})

然后对于猫和狗,我创建了一个对象来存储内容:

App.Cats = Em.Object.create({
    content:[{name:"Russian Blue"}, {name:"British Short Hair"}, {name:"Domestic Tabby"}]
});

集合视图:

App.CatsCollectionView = Em.CollectionView.extend({
    content:App.Cats.content,
    itemViewClass:'App.CatsView'
});

要呈现的集合视图的视图类:

App.CatsView = Em.View.extend({
    templateName:"cats",
    init:function(){

    }
});

但结果会显示第一个出口的集合的内容在第二个重复:

Dog:Huski
Dog:Samoid
Dog:Elkhound
HuskiSamoidElkhound
Cat:Russian Blue
Cat:British Short Hair
Cat:Domestic Tabby

那么这是如何发生的,如何解决呢?

4

1 回答 1

0

您什么都没有覆盖该init功能。默认情况下,视图会调用 init 并执行一些您看不到的奇特魔法。通过声明该函数,您已阻止该函数被调用。如果您真的想包含该init函数,那么您应该this._super();在函数顶部调用,如更新后的jsfiddle 所示

什么this._super();是从继承的对象(在本例中为“视图”对象)调用 init 函数,然后执行您的附加代码。

于 2013-02-11T11:12:36.057 回答