0

私はTypeaheadを使用してjsonファイルから情報を取得しています。それは問題なく動作するようになりました。 しかし、最初のオブジェクトを選択したときに、他のいくつかの入力フィールドを「オートコンプリート」したいと思います。角度UIブートストラップ先読み、複数出力?

はのは、最初のフィールドは次のようになりましょう:

<input type="text" class="form-control" id="supertag" ng-model="selected" uib-typeahead="title.title for title in tags | filter:$viewValue | limitTo:8"/> 

それは素晴らしい、その入力フィールドにtitle.titleを表示します! 私はいくつかの点でこのジレンマにアプローチしようとしましたが、最初のものが選択されて準備が整ったら残りの入力フィールドには表示されません。私は次のものにtitle.subtitleのようなものを持っていたいが、それはまっすぐであるようには見えない。

私には何が欠けていますか? これは、例えば動作しません:

<input type="text" class="form-control" id="rubrik" value="{{title.subtitle}}"/> 

感謝を!

編集:

{ 
title: 'title', 
subtitle: 'subtitle', 
id: 'id' 
}, 
{ 
title: 'title', 
subtitle: 'subtitle', 
id: 'id' 
}, 

編集:別のJSONファイル間の比較のために さらにコード JSONは次のようになります。

だから、これはにどのような入力フィールドポイントである:

$http.get(tagUrl) 
     .then(function(res) { 
      $scope.tags = res.data; 
     }) 

とにonSelect:私は入力IDの比較を行うための機能が欲しいのはここ

$scope.onSelect = function($item, $model, $label) { 
     $scope.id = $item.id; 
     $scope.title = $item.title; 
     $scope.selected = $item.selected; 
     $scope.subtitle = $item.subtitle; <- undefined because it only exists in JSON2, not in JSON1. 
     console.log($scope.id); 
    }; 

です。 JSON1(tagUrl)には常に存在しますが、さらに進める前にJSON2(superUrl)に存在するかどうかを調べる必要があります(存在する場合は$ scope.subtitle = $ item.subtitleを対応する入力フィールドに設定します) 。 if文を使ってさまざまなアプローチを試しましたが、最善の方法では定義されません。

私はこれをng-repeatのために持っています。これはページ上のすべてのsuperUrlをリストしています。

$http.get(listSuperUrl) 
     .then(function(res) { 
      $scope.current = res.data; 
     }) 
+0

superUrlが存在するかどうかを確認するには、真実を使用する必要があります。基本的にはif(superUrl)のようなことができます。 – Leibniz

答えて

2

あなたが広告に必要supertag入力要素にtypeahead-on-select="vm.onSelectItem($item, $model, $label)、(あなたは、コントローラで$スコープを使用している場合)またはtypeahead-on-select="onSelectItem($item, $model, $label)(あなたがVMとしてコントローラを使用している場合)。あなたはあなたが望むものであれ、onSelectItemに名前をつけることができます。それは私がイラストレーションに使用した関数です。

<input type="text" ng-model="subtitle" class="form-control" id="rubrik"/> 

それはあなたのビューで行われたら、あなたのコントローラに移動し、定義:

vm.onSelectItem = function($item, $model, $label){ 
    /*bind your subtitle ngModel to $item.subtitle*/ 
    vm.subtitle = $item.subtitle; 
} 

または

$scope.onSelectItem = function($item, $model, $label){ 
/*bind your subtitle ngModel to $item.subtitle*/ 
$scope.subtitle = $item.subtitle; 
} 

をこれはあなたのためにそれを行う必要があり、それはdoesnのなら、私に知らせて私はコードでこれを試していないので、

+0

うわー、ありがとう!あなたのコードを少し修正するだけで、うまくいきました! – mtorn

+0

@mtom、それが役に立ったと聞いてうれしいです:) – Leibniz

+0

http.getを使って別のJSONファイルを「見る」ようにonSelectを設定することはできますか?私はいくつかの比較を(json1とjson2の間で)行いたいが、それが適切に動作するようにはできない。 – mtorn

関連する問題