私は、Aureliaを使用してjsonに基づいて動的フォームを作成しています。フォームは、次のようなjsonから生成されています。Aureliaを使用するスキーマフォーム
Schema = [{
'key': 'Name',
'display': 'Name',
'type': 'text',
'placeholder': 'Name',
'required': true
},
{
'key': 'IsSubscribed',
'display': 'Subscribed to newsletter?',
'type': 'checkbox',
'placeholder': null,
'required': false
}];
フォームを記入するモデルは、Web APIサービスから入手できます。だから、私は以下のテンプレートを使って成功しました。
<template>
<section class="au-animate">
<h2>Edit Form</h2>
<form class="form-group">
<div repeat.for="item of Schema" class="form-group">
<label if.bind="item.type === 'text' || item.type === 'checkbox'" class="control-label" for.bind="item.key">${item.display}
<input class="form-control" id.bind="item.key" placeholder.bind="item.placeholder" type.bind="item.type" value.bind="Model[item.key]" />
</label>
<label if.bind="item.type === 'textarea'">${item.display}
<textarea placeholder.bind="item.placeholder" value.bind="Model[item.key]></textarea>
</label>
...
</div>
</form>
</section>
</template>
モデルにプロパティとして別のオブジェクトが含まれているときに、私は困難に直面しています。たとえば住所のプロパティの場合は、都市の入力ボックスを希望します。
したがって、item.key = "Address.City"
。
実行時にフォームが生成されるため、(1)Model.Address.Cityまたは(2)Model ['Address'] ['City']とバインドできません。私は(3)Model ['Address.City']のようなものを使いたいので、バインディングにModel [item.key]を使うことができます。これを達成するための簡単な構文はありますか?角度のJsに同様のアプリケーションの
おかげです。
ありがとう、ジェレミー。それはフォーム内の単一のフィールドのために働いた。しかし、フォームの複数のフィールドに同じものを使用すると、問題に直面しています。そのような各フィールドについて、連結は、第1のModel.Address.City、第2のModel.Address.City.Address.Stateなどの以前の呼び出しを記憶する。また、バインド解除は決して実行されません。私はAureliaにとってとても新しいので、正しい行動かどうかは分かりません。しかし、クリーンアップは起こっていないようです。私は[email protected]β1.2.2を使用しています。 –
申し訳ありません。問題に付随する要点を修正しました。また、私はaurelia-bindingの問題を開いて、次のようなことを簡単にしました。https://github.com/aurelia/binding/issues/344 Aureliaの機能拡張が実装されたら、この問題をアップデートします。あなたがそれ以上の問題に遭遇したら私に教えてください。 –
あなたの変更を見ましたが、_model&dynamicExpression: 'address.address1'_という値をaddress.address1という別の変数(keyなど)から取得しているため使用できませんでした。このような理由から、問題が発生しました。そうでなければ、model.address.address1を直接入力にバインドすることができました。 –