2017-04-26 4 views
1

に動作していないこれは私のインデックスページですangular.isArray機能がループ

<li class="active" ng-repeat="items in menuItems"> 
    <span ng-if="angular.isArray(items)"> 
     <a href="" class="act">{{items}}</a> 
    </span> 
</li> 

これは

app.controller('mainController', function($scope) { 
    $scope.assests = 'include/assests.html' ; 
    $scope.menu = 'include/menu.html' ; 
    $scope.footer = 'include/footer.html' ; 
    $scope.menuItems = [ 'a' , ['xyz'] , ['abc'] ]; 
}); 

のMenuItem私のコントローラであり、配列と値の組み合わせですが、angular.isArray(アイテム)どちらも真でも偽でもない。

+0

http://stackoverflow.com/questions/25411291/angularjs-inline-check-if-an-array-check –

答えて

3

<span ng-if="angular.isArray(items)">はあなたのスコープ内で何かを探します:$scope.angular.isArray();それは明らかに存在しません。

私は次の操作を行うためにあなたをお勧めします:

<span ng-if="isArray(items)"> 

そして、あなたのコントローラでは、この関数を定義します。

$scope.isArray = function(obj) { 
    return angular.isArray(obj); 
} 
+0

ありがとうございました。 –

+1

あなたは私に完璧な解決策をくれました –

0

は自分のコントローラで、その後ng-if="isArray(items)"を入れて、

$scope.isArray = function(value){ return Array.isArray(value) } 
0

他の解決策がありますが、私はそれを使用することを推奨しません(角を覆うことをお勧めします。ビューからアングルに直接アクセスすることはできませんが、いつかは便利です)。

あなたはこのようなangular値で$scope.angularプロパティを設定することができます。angular.isArrayような観点から、この場合

(function(angular) { 
'use strict'; 

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

    app.controller('MainCtrl', ['$scope', function($scope) { 
     $scope.angular = angular; 
    }]); 
})(angular); 

アクセスが$scope.angular.isArrayに変換されます。