2017-01-27 5 views
1

アウレリアの<compose>要素に関する簡単な質問。アウレリア製

<!-- Loop through form controls --> 
<div class="form-group" repeat.for="control of controls"> 
    <label><span t="${control.label}"></span></label> 
    <compose view-model="resources/elements/${control.type}/${control.type}" 
    value.bind="control.value" data.bind="control.data" placeholder.bind="control.placeholder"></compose> 
</div> 

しかし、<compose>要素のみmodelview-modelviewパラメータを受け入れるに制限されているように見えるし始めている:私はこのように、フォームコントロールとカスタム要素を挿入するためにそれを使用することを望んでいました。あれは正しいですか? valuedataplaceholderのようなパラメータをcontrol.typeに基づくカスタム要素に渡す最も良い方法は何ですか?私のソリューションと

編集:最後に

、アウレリアの<compose>のみviewview-modelmodel属性で動作することが表示されます。私が面白いんでしたが、あなたがmodel.bindを使用するときに、あなたがする必要がないということです

<compose view-model="resources/elements/${control.type}/${control.type}" 
     model.bind="{'control': control, 'model': model, 'readonly': readonly}"> 
</compose> 

:私のソリューションは、すべてのデータ(単一のオブジェクトとして渡された複数の項目することができます)このようなを渡すことです@bindableデコレータを使用してパラメータを受信します。それらはビュー内ですぐに利用可能です。

+0

を実行します@ 「」でバインド可能なパラメータと、ビュー専用のelemビューは外側スコープに接続されていますが、ビューモデルを持っている場合は、 'model.bind'で渡す必要があります。 – LStarky

答えて

2

model.bindの使用はどうですか?

<!-- Loop through form controls --> 
<div class="form-group" repeat.for="control of controls"> 
    <label><span t="${control.label}"></span></label> 
    <compose view-model="resources/elements/${control.type}/${control.type}" 
    model.bind="control"></compose> 
</div> 

そして、ビューモデルは、そのmodelプロパティからvaluedataplaceholderへのアクセスを持っているでしょう。

2

<compose>は外側スコープにアクセスできるため、何もバインドする必要はありません。これは動作するはずです:

使用

<compose view-model="resources/elements/${control.type}/${control.type}"></compose> 

HTML

<template>${propertyFromParent}</template> 

は、私はまた、あなたが `を使用することはできませんアシュリー・グラントから学んだ例https://gist.run/?id=8bb9c5503b4bbb7923a3a4c9e804c656

+0

このスコープは、 'bind()'メソッドの中か、いつでも利用できますか? – LStarky

+0

いつも 'bind'の後に –

+0

Fabio、これを試してみたところ、うまくいきませんでした。 'bind(){console.log(" EwTextbox bind(): "、これ); } '' __observers__'と '__proto__'のみを表示し、親からのデータは一切含んでいません。 'this.control'は未定義です。 – LStarky

関連する問題