2017-08-18 12 views
0

Aureliaカスタム要素であるDOM要素のビューモデルにアクセスする場合、Aureliaが接続するauプロパティを使用できます。componentElement.au.controller.viewModelのようになります。コンテナレス要素のViewModelを取得

カスタム要素がコンテナレスの場合(クラスレベルの属性@containerless)、auは使用できません。

この要旨はこのことを示しています。 https://gist.run/?id=928f97f49c01c1db10d8bf4399f5c335

私はそのDOM要素への参照を持っているとき、私は無容器カスタムコンポーネントののviewmodelにアクセスするにはどうすればよいですか?

答えて

0

あなたのビューモデルにcreatedライフサイクルにフックして欲しいものを達成:

class ViewModel { 
    created(owningView, view) { 
    view.controller 
    view.controller.viewModel // <-- this is what you want 
    } 
} 
+0

'少ない-comp'でこれを行う場合は、' view.controller'は 'undefined'です。コンテナレスのコンポーネントなので、私は推測します。また、 'view.controller.viewModel'は' this'と等しくなりますので、何がポイントですか? – ZoolWay

+0

慎重に質問を読んだり、あなたの使用状況をチェックしたり、あなたが望むものが '@子供たち 'によってサポートされないことが分かりました。おそらく離れている – bigopon

1

私は、これはあなたが望むものであるかどうかわからないんだけど、あなたはview-model.refを使用することができます。例えば:

<less-comp text="item three, containerless" view-model.ref="test"></less-comp> 

使用法:

export class App { 
    attached() { 
    console.log(this.test); 
    } 
} 
+0

この方法では、アプリケーションで 'less-comp'のVMが利用可能ですが、' list-comp'(私は現在それらのコンソールログを出力しています)にあるはずです。また、もし私が 'repeat.for 'で' less-comp'を作ったら、どうすればうまくいくのでしょうか? – ZoolWay

関連する問題