角度UI typeaheadディレクティブを使用しています。私は先のドロップボックスにいる人のリストを持っています。人々のリストは、LastName
、FirstName
、CustomerNumber
などのようなプロパティを持つオブジェクトの配列です(私のドメインは完全に異なっており、これは分かりやすくするためのものです)。角度UIの先読みで選択時にテキストボックスにデータが入力されない
<input type="text" ng-model="vm.selectedCustomer"
typeahead-append-to-body="true"
uib-typeahead="i.LastName for i in vm.lstCustomers | filter:$viewValue" />
しかし、私は先着先のDropboxにもっと多くの顧客情報を示したいと思います。さんが言ってみましょう、私はコントローラ内の機能を持っている:
vm.getFullName = function(customer) {
return customer.LastName + ", " + customer.FirstName + " - " + customer.CustNumber;
}
と、対応するディレクティブ:選択が行われると
<input type="text" ng-model="vm.selectedCustomer"
typeahead-append-to-body="true"
uib-typeahead="vm.getFullName(i) for i in vm.lstCustomers | filter:$viewValue" />
、モデルが正しく読み込まれます。テキストボックスにはundefined, undefined - undefined
と表示されます(奇妙なことに、構造はgetFullName()
が空の値に適用されたように見えます - カンマとダッシュで)。
私はlstCustomersのすべての要素を通過し、(getFullNameを適用した場合)、すべてが再び正常に見える:
var lstCustomersFlat = [];
for (i = 0; i < vm.lstCustomers.length; i++) {
var customer = vm.getFullName(vm.lstCustomers[i]);
lstCustomersFlat.push(customer);
}
しかし、私はそれを行う必要はありません、私がすべき?私は何かを逃しているのですか、あるいはバグを見つけましたか?
ありがとうございます。私の問題を解決するだけでなく、実際にはより良いモデルを生み出します。私は明らかに 'select'指示文のより良い理解を得る必要があります! – Felix
あなたは暖かく歓迎しています:) – Sampath
サンパス、もしあなたが気にしないなら、この構文が文書化されているところを教えてください。 Angular UI *は「sourceArrayの値のラベルとして選択」を参照していますが、実際の定義にどこに行くのかわかりません...事前に感謝しています! – Felix