【问题标题】:Check what attributes have been assigned to component in Emberjs检查已为 Emberjs 中的组件分配了哪些属性
【发布时间】:2016-02-14 20:36:54
【问题描述】:

我写了一个组件来显示一个选择模式对话框。

{{m-modal-select value=valList valuePool=possibleValueList}}

这是一个多选组件,valuePool是候选列表,value是选中列表。现在我想在这个组件内同时支持多选和单选,当它是单模式时,代码应该是这样的:

{{m-modal-select singleValue=selectedOne valuePool=possibleValueList}}

我希望组件本身可以通过观察分配给它的属性(值或单个值)来识别它是处于单模式还是多模式。

不知道如何在组件js中实现。

另外,我还想知道是否有一个函数可以获取组件中所有分配的属性名称。对于以上两个示例,如下所示:

this.get('assignedAttrNames');  

//the first one 
// ['value', 'valuePool']

//the second one
// ['singleValue', 'valuePool']

【问题讨论】:

    标签: javascript ember.js handlebars.js htmlbars ember-components


    【解决方案1】:

    this.get('attrs') 将提供一个具有您传递给组件的属性的对象。

    检查是单选还是多选

    //component.js
    if(this.get('singleValue')){ 
      //single select code 
    }else{
      //multi select code
    }
    
    //component.hbs (only if you need so)
    {{#if singleValue}}
    single select code
    {{else}}
    multi select code
    {{/if}}
    

    【讨论】:

    • 例如 {{x-comp username}} , username 是相关控制器中的一个属性。无论如何都可以在组件中访问 attr name('username' here is) 和 value 吗?
    • 如果你使用{{x-comp username=username}},那么从组件调用this.get('attrs')会给你属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多