当我在containerView中添加相同类型视图的多个实例时,实际上存在相同的实例。我如何才能使它们成为不同的实例?
我创建了一个小jsbin来说明情况。三个“窗口”的标题应为“第一窗口”,“默认标题”和“第三窗口”,但都具有“第三窗口”标题。
我试图用singleton选项注册我的视图为false但没有任何成功。
App.register('view:window',App.Window,{singleton:false})
答案 0 :(得分:0)
而不是create
在您的子视图中使用extend
,因此每次创建新的App.Window
时,ember都会实例化新的子视图:
App.Window = Ember.ContainerView.extend
classNames: ['window']
childViews: ['headerView', 'bodyView', 'footerView']
title: 'Default title'
headerView:
Ember.View.extend // <= extend instead of create
classNames: ['window-header']
template: Ember.Handlebars.compile('{{ view.parentView.title }}')
bodyView:
Ember.View.extend // <= extend instead of create
classNames: ['window-body']
template: Ember.Handlebars.compile('Body')
footerView:
Ember.View.extend // <= extend instead of create
classNames: ['window-footer']
template: Ember.Handlebars.compile('Footer')
仅使用create
,您将拥有由任何已创建的App.Window
共享的每个共享子视图的单个实例。像这样:
App.Window = Ember.Container.extend
headerView:
instance h1
bodyView:
instance b1
...
w1 = App.Window.create()
w1.get('childViews') // [instance h1, instance h2]
w2 = App.Window.create()
w2.get('childViews') // [instance h1, instance h2]
etc