假设我有一个模型应用程序 Page,一个阵列控制器 App Page, 和一个App Page View 来制作每个应用程序。
我想找出如何最佳地执行 App.MyPagesView ,
- if App.showAllPages is true: I want MyPagesView to contain an App.PageView(s) for displaying each of the App.Page in App.pages
- Else: I want MyPagesView only show one App.PageView, bound to App.pages.currentPage.
我最直截了当的 执行方式就是使用这样的模板:
// MyPagesViewApproach1
{{#unless App.showAllPages}}
{{view App.PageView pageBinding="pages.currentPage"}}
{{else}}
{{#each pages}}
{{view App.PageView pageBinding="this"}}
{{/each}}
{{/unless}}
< strong> 但每次用户打开或关闭 < em'showAllPages em > 用户都会为现有模型创建新视图吗? strong > 另外, 当我尝试使用此模板时, 我也会收到关于性能问题的 emberJS 警告 。
PageView(s) 可能非常复杂,而且成本很高。 我真的很想为每页创建一次PageView(PageView), 并在没有使用时从DOM中删除/隐藏不相关的PageView(PageView) 。
App = Ember.Application.create({
showAllPages: false,
pages: Ember.ArrayController.create({
content: []
currentPage: null
}),
ready: function () {
this.pages.pushObject(App.Page.create({title: Page One });
this.pages.pushObject(App.Page.create({title: Some Other Page });
this.pages.pushObject(App.Page.create({title: Grrreatest Page Evar });
this.pagesController.set( currentPage ,
this.pagesController.get( firstObject ));
}
});
App.Page = Ember.Object.extend({
title: null
// etc, etc...
});
App.PageView = Ember.View.extend({
templateName: page ,
page: null // should be bound to an App.Page
});
App.MyPagesView_Approach1 = Ember.View.extend({
pagesBinding: Elicitation.pages
// ???
});
App.MyPagesView_Approach2 = Ember.ContainerView.extend({
// ???
});
还有我的HTML:
<script type="text/x-handlebars" data-template-name="page">
The title of this page is {{ page.title }}
</script>
{{view App.MyPagesView }}
回想一下,执行 MyPagesView 的适当 EmberJS-y 方法是什么? 它响应 App.showallPages 而不在每次拖动时重新生成所有视图?
应该是集装箱查看吗? 或者我应该使用问题顶端显示的 除非/ else 模板? 或者完全不同的模板? 我觉得EmberJS中存在一个很简单的解决方案,但是它能消除我。