2015-09-08 14 views
17

をコンテナを作成せずのは、私が持っているとしましょう:を繰り返し、複数のタグアウレリア

<template> 
    <!-- some code here --> 
    <div> 
    <div repeat.for="item of arr"> 
     <label for.bind="item.id">${item.name}</label> 
    </div> 
    <div repeat.for="item of arr"> 
     <input type="text" id.bind="item.id" value.bind="item.value" /> 
    </div> 
    </div> 
    <!-- more code here --> 
</template> 

との私のViewModelにのarrプロパティがあると仮定してみましょう:

オーレリアはそれをレンダリングします
arr = [ 
    { id: 'txtID', name: 'ID', value: '' }, 
    { id: 'txtFirstName', name: 'First Name', value: '' }, 
    { id: 'txtLastName', name: 'Last Name', value: '' } 
]; 

このように:

<!-- some code here --> 
<div> 
    <div> 
    <label for='txtID'>ID</label> 
    </div> 
    <div> 
    <label for='txtFirstName'>First Name</label> 
    </div> 
    <div> 
    <label for='txtLastName'>Last Name</label> 
    </div> 
    <div> 
    <input type="text" id="txtID" value="" /> 
    </div> 
    <div> 
    <input type="text" id="txtFirstName" value="" /> 
    </div> 
    <div> 
    <input type="text" id="txtLastName" value="" /> 
    </div> 
</div> 
<!-- more code here --> 

しかし、私はそれがこのようにレンダリングする必要があります。

<!-- some code here --> 
<div> 
    <div> 
    <label for='txtID'>ID</label> 
    </div> 
    <div> 
    <input type="text" id="txtID" value="" /> 
    </div> 
    <div> 
    <label for='txtFirstName'>First Name</label> 
    </div> 
    <div> 
    <input type="text" id="txtFirstName" value="" /> 
    </div> 
    <div> 
    <label for='txtLastName'>Last Name</label> 
    </div> 
    <div> 
    <input type="text" id="txtLastName" value="" /> 
    </div> 
</div> 
<!-- more code here --> 

二つの条件があります。

  1. が、私はコンテナ
  2. にそれらを置くことができない私は作成することはできません。カスタム要素

また、私の質問は:

コンテナを作成せずにrepeat.forを使用して複数のアイテムを繰り返すにはどうすればいいですか?

これは私がいつも必要とするものの例としてのみ作成したもので、常にコンテナ(またはコンテナレスカスタム要素)を作成することで終了するため、HTMLなどの変更を提案しないでくださいコンテナはありますが)これをスムーズに行う方法があるかどうかを知りたいと思います。例えば


、KOで、とすぐに私たちは親にforeachコマンドを入れて、私は単純に行うことができます:

<!-- some code here --> 
<div data-bind="foreach: arr"> 
    <div> 
    <label data-bind="for: id">{{name}}</label> 
    </div> 
    <div> 
    <input type="text" data-bind="id: id, value: value" /> 
    </div> 
</div> 
<!-- more code here --> 

答えて

27

はちょうどこの

<template> 
    <!-- some code here --> 
    <div> 
    <template repeat.for="item of arr"> 
     <div> 
     <label for.bind="item.id">${item.name}</label> 
     </div> 
     <div> 
     <input type="text" id.bind="item.id" value.bind="item.value" /> 
     </div> 
    </template> 
    </div> 
    <!-- more code here --> 
</template> 
のようなテンプレートタグを使います

templateタグはこれを行うための従来の方法ですので、Aureliaは内部のすべてをレンダリングします。

+0

IEの_inside_テーブルで 'template'タグを使用しようとしているだけです。複数のtd要素を繰り返す。 IEではこれができません。 https://github.com/aurelia/html-template-element/issues/3を参照してください。 – thinkOfaNumber

関連する問題