Ember.js集合视图与项目容器视图

时间:2012-08-23 19:59:30

标签: ember.js

我目前正在使用一个具有CollectionView的ContainerView,但是希望在CollectionView的ItemView中有另一个View。我已经将ItemView更改为ContainerView,并附加了新的View,但是我无法绑定来自父Collection的内容 - >容器给孩子查看。

我可以传递值,但由于某种原因绑定只是barf。

代码:

App.MainView = Ember.ContainerView.extend({
    header: Ember.View.create({
        templateName: "headerView"
    }),

    list: Ember.CollectionView.extend({
        contentBinding: "parentView.content",
        itemViewClass: "App.childContainer",
        tagName: "table"
    }),

    footer: Ember.View.create({
        templateName: "footerView"
    })
});

App.childContainer= Ember.ContainerView.extend({
    templateName: "childContainer",
    didInsertElement: function() {
        //NOTE:: THIS WORKS 
        var v = App.childContainerItem.create({"content":this.get('content')});
        //NOTE:: THIS DOESN'T WORK 
        var v = App.childContainerItem.create({"contentBinding":"this.content"});
        this.get('childViews').pushObject(v);    
    }
}); 

App.childContainerItem= Ember.View.extend({
    didInsertElement: function() {
        console.log(this.get('content').get('value'));    
    }   
});

我得到:TypeError: this.get("content") is undefined

我感觉我很亲近,但只是错过了一些愚蠢的事情。有人可以给我敲额头吗?

1 个答案:

答案 0 :(得分:0)

您可以通过添加此行didInsertElement函数

来获取视图的html内容
App.childContainerItem= Ember.View.extend({
    didInsertElement: function() {
        console.log(this.get('content').get('value'));    
    }   
});