2016-03-22 6 views
2

私はこれは不可能だと思っていますが、誰かがより良く知っているかどうかを知りたいと思っていました。Emberの `action`ヘルパーに提供される関数の名前を取得する

ES6を使用すると、関数の名前を取得できます。例:

function foo() { return true; } 
function bar() { return true; } 

const functionContainer = foo; 

foo.name; // 'foo' 
bar.name; // 'bar' 
functionContainer.name; // 'foo' 

アクション・ヘルパーにアクションを渡すことができます。

export default Ember.Component.extend({ 
    actions: { 
    bar() { 
     return true; 
    } 
    } 
}); 

テンプレート:たとえば、私がしようとすると

export default Ember.Component.extend({ 
    doFoo: Ember.on('didRecieveAttrs', function() { 
    console.log(this.attrs.foo.name); // 'bar' 
    }) 
}); 

が、私は空白の文字列を取得:

{{foo-component foo=(action "bar")}} 

foo-component内では、これを行うにはいくつかの方法があります。これは、barのアクションが無名関数でラップされているように見えるので、意味があります。ember-metal

誰でもその名前を取得する方法を知っていますか?私が取り組んでいるプロジェクトには大きな違いがあります。

答えて

1

いや、あなたは正確にあなたがここに閉鎖>について<挿入技術的な議論をやりたいことはできませんが、できるのと同じようにように、あなたのコンポーネントに別のparamを追加することで、それちょっと偽:その後、

{{foo-component foo=(action "bar") actionName="bar"}} 

あなたのコンポーネントの.jsにアクセスできます

this.attrs.actionName // "bar" 
関連する問題