2016-05-12 50 views
1

我想下面的代碼應該是文本3文本4,但沒有得到正確的輸出。代碼中存在任何問題?角度limitTo不會返回正確的輸出

HTML

<body ng-app="angularjs-starter" ng-controller="MainCtrl"> 
    <h1>Hello {{name}}</h1> 
    <div ng-repeat="t in getTimes(4) | limitTo:-2">text {{$index+1}}</div> 
    </body> 

JS

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

    app.controller('MainCtrl', function($scope) { 
    $scope.name = 'World'; 
    $scope.getTimes = function(n) { 
     return new Array(n); 
    }; 
}); 
+0

@PirateX也可以是負得負意味着它結束 –

+0

@WildWidow開始將'-5'是一樣'-2'呢? –

+0

@PirateX如果數組有2個元素-2將與-5相同。如果超過數組的長度,它將停留在第一個元素 –

回答

1

您的代碼不工作,因爲你在設置有重複和getTimes()被重新調整[undefined, undefined, undefined, undefined]

在這種情況下,使用t in getTimes(4) | limitTo:-2 track by $index進行適當的數組初始化或使用避免重複的函數。

另一個問題是$index始終由開始。所以你不會像你期望的那樣得到文本3文本4。如果您需要數組值,則需要使用text {{t}}

實例:

軌道由$索引

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

 
app.controller('MainCtrl', function($scope) { 
 
    $scope.name = 'World'; 
 
    $scope.getTimes=function(n){ 
 
     return new Array(n); 
 
    }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<body ng-app="angularjs-starter" ng-controller="MainCtrl"> 
 
    <h1>Hello {{name}}</h1> 
 
    <div ng-repeat="t in getTimes(4) | limitTo:-2 track by $index">text {{$index+3}}</div> 
 
</body>

OR

順次陣列

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

 
app.controller('MainCtrl', function($scope) { 
 
    $scope.name = 'World'; 
 
    $scope.getTimes = function(n){ 
 
     return Array.apply(null, {length: n}).map(Number.call, Number); // [0, 1, ..., n-1] 
 
    }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<body ng-app="angularjs-starter" ng-controller="MainCtrl"> 
 
    <h1>Hello {{name}}</h1> 
 
    <div ng-repeat="t in getTimes(4) | limitTo: -2">text {{t+1}}</div> 
 
</body>

+0

人們希望閱讀「文本2,文本3」,你可以在你的數組中添加值並顯示它,而不是來自「有限」數組的索引,以便更好地理解......我不確定我是否足夠清楚:p –

+0

看到這個URL http://www.w3schools.com/angular/tryit.asp?filename=try_ng_ref_limitto_end他們可以從第4位打印,他們使用limitTo和負值。 –

+0

我在這裏得到了正確的輸出是jsfiddle https://jsfiddle.net/tridip/hLkky28n/我得到正確的輸出,如果我們提前填充數組。 –

2

$index總是從0開始,不管你limitTo過濾器。所以只需在綁定表達式中直接使用t即可。

<body ng-app="angularjs-starter" ng-controller="MainCtrl"> 
    <h1>Hello {{name}}</h1> 
    <div ng-repeat="t in getTimes(4) | limitTo:-2">text {{t}} </div> 
    </body> 

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

    app.controller('MainCtrl', function($scope) { 
    $scope.name = 'World'; 
    $scope.getTimes=function(n){ 
     return new Array(n); 
    }; 
}); 
+0

我們可以將'limitTo'設置爲'-2'嗎? –

+1

@PirateX是的,我們可以,這意味着我們將從頭開始。 http://www.w3schools.com/angular/ng_filter_limitto.asp –

+0

我嘗試了它的代碼片段,這不工作......不知道爲什麼。 –