2016-03-20 5 views
1

私は角度を使用していますが、キーに基づいてキーと値のペアから値を表示しようとしています。私はこれにng-repeatを使って解決策を見てきましたが、それは乱雑です。コントローラーロジックを含まないより良いソリューションはありますか?特定のキーを選択してからng-repeatを指定しないで特定の値を表示

など。

は、私は配列にIDと名前の果物を持って言う:

$scope.fruits = [ 
{id:1, name:"apple"}, 
{id:2, name:"banana"}, 
{id:3, name:"cherry"} 
]; 

$scope.fruit_selection = 3; 

次に私の見解で、私はHTMLで

<a>{{some logic that shows cherry}}</a> 
+0

なぜあなたは直接fruit_selectionインデックスを使用して果物にアクセスすることはできませんか? – user7

+0

私は新しい - ishのjavascriptです。例を見せてもらえますか? – Suavocado

+0

' fruits [fruit_selection - 1] .name'これは "cherry"と表示されます。これは、あなたの望むことですか? – user7

答えて

1
$scope.pickFruitById = function() { 
    $scope.fruits.forEach(function(element){ 
    if(element.id == $scope.fruit_selection) { 
     $scope.fruitToBeDisplayed = element.name; 
    } 
}); 
} 
$scope.pickFruitById(); 

を見てみたいと思います:

<a>{{fruitToBeDisplayed}}</a> 

pickFruitByIdは、 ID fruit_selectionと果物CKと$scope.fruitToBeDisplayedにそれを割り当てます。あなたは、私は機能のロジックを置く理由があれば$scope.fruit_selection変更は、あなたがHTMLからこの関数を呼び出すことができるということです{{}}表記を使用してHTMLから

にアクセスすることができます新しいfruitToBeDisplayedを取得します。

+0

これはうまくいくようですが、可能であればほとんどの角度のディレクティブを使用して動作するバージョンを実験します。 – Suavocado

1

demoを見てください。コード/ロジックはいくらか少なくなります。

以下のコードを見つけてください:

HTML:

<div ng-app="app" ng-controller="test"> 
    <span ng-repeat="item in fruits"> 
     <a ng-if="item.id == fruit_selection"> 
     {{item. name}} 
     </a> 
    </span> 
</div> 

JS:

var app = angular.module("app", []); 

    app.controller ('test', function($scope) { 
     $scope.fruits = [ 
     {id:1, name:"apple"}, 
     {id:2, name:"banana"}, 
     {id:3, name:"cherry"} 
     ]; 
     $scope.fruit_selection = 3; 
    }); 
関連する問題