2016-10-13 6 views
0

私のコントローラで、文字列または配列の値を参照しています。配列の場合は、 "ng-repeat"(おそらく)を使用してアイテムをリストします。配列の場合に繰り返し、文字列を表示する

文字列の場合は、文字列を表示したいだけです。以下のような

何か:私はまだ、単純に精通していないよAngularjsでこれを行うためのエレガントな方法があるかどう

<div> 
    {{if is array}} 
     <span ng-repeat="v in myvalue">{{v}}</span> 
    {{else}} 
     {{myvalue}} 
    {{endif}} 
</div> 

は、私は思ったんだけど。

おかげ

答えて

1

angular.isArrayメソッドがあります。あなたはそれを使うことができます。あなたは、スコープまたはVMでそれを配置する必要があります。

$scope.isArray = angular.isArray 

そしてHTML

<span ng-repeat="v in myvalue" ng-if="isArray(myvalue)">{{v}}</span> 
<span ng-if="!isArray(myvalue)">{{myvalue}}</span> 

であなたが複数の場所でそれを使用している場合は、最高のディレクティブのために行くことです。

+0

補間では「if」とは何ですか?それはどのようにして期待される成果を生み出すのか – charlietfl

+0

@charlietfl角度は条件を補間できます。 – jusopi

+0

@jusopiはうまくいっても期待通りの結果が得られません...編集後には – charlietfl

1

は、(配列や文字列の異なる変数に割り当てる)、コントローラのロジックを実行してください - そしてちょうどビューでダムのロジックを実行します。

if (Array.isArray($scope.myvalue)) { 
    $scope.myArray = $scope.myvalue; 
} else { 
    $scope.myString = $scope.myvalue; 
} 

とビュー

<div> 
    <div ng-if="myArray"> 
     <span ng-repeat="v in myArray">{{v}}</span> 
    </div> 
    <div ng-if="myString"> 
     {{myString}} 
    </div> 
</div> 
1

通常どおりにちょうどリピータを使用する代わりに、NG-IFおよび ngのリピートの単純なゲッター

$scope.getVal = function(vals){ 
    if(Array.isArray(vals)) return vals 
    else return [ vals ] 
} 

を作ります。

<div ng-repeat="val in getVal(vals)"> {{ val }} </div> 
+0

これがうまくいかない具体的な状況には微妙な違いがありますが、私はそれが他者にどうなるかを見ることができます。 Upvote –

+0

詳細を説明できますか? – jusopi

+0

実際には配列の要素を配列要素でラップしていますが、これは配列の要素とユーザーのやりとりが追加されるためです。 –

関連する問題