我声明了template中的一个emberjs组件为:
<script type="text/x-handlebars" id="components/custom-component">
<h4>The name of the object passed is : {{object.name}}</h4>
{{#if show_details}}
<p>The details of the object passed are : {{object.details}}</p>
{{/if}}
</script>
现在我在我的html模板中使用这个组件:
<script type="text/x-handlebars" data-template-name="index">
<ul>
{{#each object in model}}
<li>{{custom-component object=object}}</li>
{{/each}}
</ul>
</script>
我的自定义组件的组件类如下所示:
App.CustomComponentComponent = Ember.Component.extend({
show_details: function() {
// return true or false based on the OBJECT's property (e.g. "true" if object.type is 'AUTHORIZED')
},
});
- 更新**
我实现它的方法如下:
App.CustomComponentComponent = Ember.Component.extend({
show_details: function() {
var object = this.get('object');
if (object.type == "AUTHORIZED")
return true;
else
return false;
}
});
传递给组件类的参数可以使用它的get
方法获得。
2条答案
按热度按时间omqzjyyz1#
它应该这样工作:
(you只是使用了错误的属性名称)。
如果
object
是对象名,则此操作应该有效。如果name是object
的属性,则使用object.name
。这应该很简单。
show_details
应定义为计算属性,具体取决于object type
:或者更简单:
访问Ember对象的属性时,不要忘记使用
get
。fsi0uk1n2#
更新Glimmer组件
在更新的Ember组件(Glimmer)中,您可以从
this.args
访问传递给component类内部组件的值,这里的指南非常有帮助。指南中的简单示例
之前:
之后:
一个二个一个一个