2017-09-12 4 views
1

私は、メインビューがリピータの別の部分ビューを構成する部分ビューを構成する構造を持っています。ViewModel-less aureliaのmodel.bindで作成

例:

メインビュー

<template> 
    <h1>${factory.name}</h1> 
    <div class="column"> 
     <compose view="./cars.html"></compose> 
    </div> 
</template> 

<template repeat.for="car of factory.cars"> 
    <compose view="./specifications.html model.bind="{test: 'abc}"></compose> 
</template> 

仕様は

を表示表示0
<template repeat.for="car of factory.cars"> 
    <h1>${$parent.$parent.factory.name} - ${car.name}</h1> 
    ${test} 
</template> 

私が直面している問題は、model.bindが動作しないことです。私は上記のtestで試しましたが、私が実際に渡したいのは$parent.$parent.factoryなので$parent.$parent.factory.namespecifications viewに出力できます。

(結合が必要である ので、私は、私はこのようにそれを印刷することができます知っているが、シナリオは道より複雑になります)

両方specificationscarsビューがのviewmodelレスであることを言及する価値があります。 mainビューのみが、factorycarsから来ているビューモデルを持っています。

According to this page私がしようとしていることは可能ですが、私が間違っていることについて私の頭を包み込むことはできません。

+2

私の知る限り

export class Main { public parentFactory; public activate(data) { this.parentFactory= data; } } 

そしてビューで、model.bindあなたはそれへのバインディング・コンテキストを設定したい場合は、ビューモデルの有効化するには、それを渡すためにエンジンに指示されますtry.bind –

+2

を試してみてください。しかし、あなたはリピートによって設定されたあなたの車のコンテキストを失います。私はVMを追加し、そこに工場を注入します。 –

答えて

1

htmlファイルだけで構成する場合、参照されるhtmlファイルのビューモデルは、compose要素が配置される場所と同じです。つまり、親のビューモデルを継承します。したがって、モデルを提供する必要はありません。

メインビュー

<template> 
    <h1>${factory.name}</h1> 
    <div> 
     <compose view="./cars.html"></compose> 
    </div> 
</template> 

cars.html

<template> 
    <div repeat.for="car of factory.cars"> 
    <compose view="./specifications.html"></compose> 
    </div> 
</template> 

specifications.html

<template> 
    <h1>${factory.name} - ${car.name}</h1> 
</template> 

はトンを見てみましょう彼のGistRun example

+0

確かに、各車のオブジェクトにそれ自身の '工場 'がある場合、これは機能しません。その後、 'specifications.html'を作成するために' cars.factories'で 'repeat.for'を実行すると、私は最初の' factory'オブジェクトを失います。 – Erythros

+0

「各車のオブジェクトには自分の工場があります」という意味はどうですか? –

0

@ Jeff Gは正しいと言いましたが、私の問題を解決したのは、すべての作品に使用できるシンプルなビューモデルを作成することでした。それは次のように探しています:

<compose 
     view="./car.html" 
     view-model="../view-models/main" 
     model.bind="$parent.$parent.factory"> 
    </compose> 
関連する問題