如何在 Ember.CollectionView 中使用模板

Posted

技术标签:

【中文标题】如何在 Ember.CollectionView 中使用模板【英文标题】:How to use a template with Ember.CollectionView 【发布时间】:2013-07-06 09:38:46 【问题描述】:

我正在尝试创建一个带有项目列表的CollectionView,并将其呈现到CollectionViewtemplateName 属性中指定的模板中。但是,我无法让它工作。

看起来像这样:

App = Ember.Application.create();

App.ItemView = Ember.View.extend(
    templateName: 'item_template',
    tagName: 'li'
);

App.CollectionViewTest = Ember.CollectionView.extend(
    templateName: 'collection_template', 
    itemViewClass: App.ItemView,

    content: [
         title: 'Item 1' ,
         title: 'Item 2' 
    ]
);

使用这样的模板:

<script type="text/x-handlebars" data-template-name="application">
    <h1>Testing CollectionView TemplateName</h1>
    collection App.CollectionViewTest
</script>

<script type="text/x-handlebars" data-template-name="collection_template">
    <h2>The CollectionView Template</h2>
    <ul>
        outlet
    </ul>
</script>

<script type="text/x-handlebars" data-template-name="item_template">
    title
</script>

事实上,&lt;h2&gt; 永远不会被渲染,除非我将 App.CollectionViewTest 更改为 Ember.View,但显然,没有列表项。

这是一个错误吗?还是我错过了什么?

-- 这是一个 js 代码:http://jsfiddle.net/S46vH/

【问题讨论】:

您的jsfiddle.net/S46vH 基本上是空白的,您在发布链接之前是否保存了最新版本? 哎呀,不。应该是:jsfiddle.net/S46vH/1,但现在问题已经解决了。无论如何谢谢。 【参考方案1】:

由于Ember.CollectionView 是Ember.ContainerView 的子类,它没有自己的模板。

来自 API 文档:

容器视图上的模板、模板名称、默认模板、布局、布局名称或默认布局属性不会导致模板或布局被渲染。 Ember.ContainerView 的 DOM 表示的 html 内容将只是其子视图的呈现 HTML。

要完成这项工作,您可以将collection_template 标记移动到应用程序模板中或使其成为部分模板。然后将outlet替换为collection App.CollectionViewTest

【讨论】:

啊,有道理。 templatetemplateName 都被列为 Ember API CollectionView 页面上的属性,这让我感到困惑。感谢您的提示! 是的,我也被绊倒了好几次。

以上是关于如何在 Ember.CollectionView 中使用模板的主要内容,如果未能解决你的问题,请参考以下文章

在QGIS中如何添加天地图的WMTS

如何在表单提交后保留文本(如何在提交后不删除自身?)

如何在异步任务中调用意图?或者如何在 onPostExecute 中开始新的活动?

在 Avkit 中如何使用这三行代码,以及如何将音乐静音”

如何在 JDBC 中启动事务?

如何在 Fragment 中调用 OnActivityResult 以及它是如何工作的?