如何访问在组件类中传递给Ember Component的属性?

时间:2014-04-09 08:22:24

标签: ember.js properties components

我在模板中声明了一个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方法。

1 个答案:

答案 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