2013-03-13 59 views
0

随着新的emberJS RC1版本,我无法将containerView作为父容器视图的childView添加。如果ConainerView的childView是另一个containerView,它会抛出错误

window.App = Ember.Application.create(); 

    App.Router.map(function(){ 
    this.resource("users"); 
    }); 

App.UsersView = Ember.ContainerView.extend({ 
    init : function(){ 
     this._super(); 
     this.pushObject(Ember.ContainerView.create({ 
    init: function(){ 
     this.pushObject(Ember.View.create({ 
      templateName : 'test1' 
     })); 
    } 
})); 
    } 
}); 

这里是jsfiddle

回答

0

你不应该使用init函数的对象上设置属性。如果使用“didInsertElement”它的工作原理:

App.UsersView = Ember.ContainerView.extend({ 
    didInsertElement : function(){ 
     this._super(); 
     this.pushObject(Ember.ContainerView.create({ 
    didInsertElement: function(){ 
     this.pushObject(Ember.View.create({ 
      templateName : 'test1' 
     })); 
    } 
})); 
+0

哦耶与didInsertElement工作......但我想了解的部分,当我能够在'添加的init(的containerView)孩子的()'的parentView ...我无法做到与childView的containerView相同... wat可能是主要原因吗?..为什么这种区别? – thecodejack 2013-03-13 12:07:47

+0

init() - 方法应该在那里初始化基本对象的状态。在你的情况下,你正在使用它来构建复杂的对象图。这对我来说似乎很尴尬,可能会导致这样的问题。你正在开始添加一个childView,Ember可能想要执行一些魔术。你不知道,Ember想在你的init方法后做一些必要的“魔术”,对吧? – mavilein 2013-03-15 09:40:20

相关问题