あなたが何を言っているのか理解できなかったのでなければ、の代わりにListObject
拡張するべきだと思います。また、プロパティがに依存している場合は、である必要があります。ルーターを使用している場合、テンプレートは次のようになります。ルーターを使用していない場合は、を使用します。また、正しくないようで、アクセス方法も間違っています。Em.ArrayController
Em.Object
content
.property('content.@each')
{{#each thing in controller.knownThings}}
{{thin.something}}
{{#each item in App.listObject.knownThings}}
openThings
closedThings
私はこの特定のケースのフィドルを書きませんでした。あなたが何をしようとしているのかよくわかりませんが、このフィドル、具体的にApp.ResourcesController
はテンプレート「resources-view」を見てください。
コントローラ:
// ...
App.ResourcesController = Em.ArrayController.extend({
content: [],
categories: ['All', 'Handlebars', 'Ember', 'Ember Data', 'Bootstrap', 'Other'],
categorySelected: 'All',
filtered: function() {
if(this.get('categorySelected') == "All") {
return this.get('content');
} else {
return this.get("content")
.filterProperty(
"category",
this.get('categorySelected')
);
}
}.property('content.@each', 'categorySelected'),
filteredCount: function() {
return this.get('filtered').length;
}.property('content.@each', 'categorySelected'),
hasItems: function() {
return this.get('filtered').length > 0;
}.property('filteredCount')
);
// ...
レンプレート:
<script type="text/x-handlebars" data-template-name="resources-view">
<h1>Ember Resources</h1>
{{#view Bootstrap.Well}}
The following is a list of links to Articles, Blogs, Examples and other types of resources about Ember.js and its eco-system.
{{/view }}
{{view Bootstrap.Pills contentBinding="controller.controllers.resourcesController.categories" selectionBinding="controller.controllers.resourcesController.categorySelected"}}
<i>{{controller.filteredCount}} Item(s) Found</i>
{{#if controller.hasItems}}
<ul>
{{#each resource in controller.filtered}}
<li>
<a {{bindAttr href="resource.url"
target="resource.target"
title="resource.description"}}>
{{resource.htmlText}}
</a>
</li>
{{/each}}
</ul>
{{else}}
{{#view Bootstrap.AlertMessage type="warning"}}
Couldn't find items for {{controller.categorySelected}}
{{/view}}
{{/if}}
</script>