Hello,
Beginner, I write this component:
export default Ember.Component.extend({
items : Ember.computed('items.[]', function(){
return this.getAttr('items').map(function(item) {
item.hide = true;
return Ember.Object.create(item);
});
}),
...
});
In my component’s template:
{{#each items as |item|}}
<span class={{if item.hide "hide"}}>{{item.name}}</span>
{{/each}}
And in my controller’s template:
{{my-component items=controllerItems}}
But, when a render my-component, ‘items’ do not have a ‘hide’ property (the computed property ‘items’ is not called)… If i rename my computed property to ‘getItems’:
export default Ember.Component.extend({
getItems : Ember.computed('items.[]', function(){
...
}),
...
});
and use it in my component’s template like this:
{{#each getItems as |item|}}
<span class={{if item.hide "hide"}}>{{item.name}}</span>
{{/each}}
All work…
Why can i not have a computed property with the same name as my component’s attribute ? thanks,