我在模板中声明了一个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
方法。
答案 0 :(得分:6)
它应该以这种方式工作:
{{custom-component object_name=object}}
(您刚使用了错误的属性名称)。
如果object
是对象名称,这应该有效。如果name是object
的属性,则使用object.name
。
<强>更新强>
这应该是直截了当的。 show_details
应定义为计算属性,具体取决于object type
:
App.CustomComponentComponent = Ember.Component.extend({
object: null,
show_details: function() {
var object = this.get('object');
if (object.get('type') === "AUTHORIZED")
return true;
else
return false;
}.property('object.type')
});
或更简单:
App.CustomComponentComponent = Ember.Component.extend({
show_details: function() {
return this.get('object').get('type') === "AUTHORIZED";
}.property('object.type')
});
访问Ember对象的属性时,不要忘记使用get
。