我有一个名为$scope.results
的数组中有8个对象的列表,我还有一个selectAll()
函数,我正在尝试使用我的自定义简单分页。
请不要发表评论说我应该为angularjs使用bootstrap分页,我自己创建了它,它完成了我需要它做的事情。
$scope.results = [
{
"devID": "1",
"devName": "item 1",
"desc": "sample desc"
},
{
"devID": "2",
"devName": "item 2",
"desc": "sample desc"
},
{
"devID": "3",
"devName": "item 3",
"desc": "sample desc"
},
{
"devID": "4",
"devName": "item 4",
"desc": "sample desc"
},
{
"devID": "5",
"devName": "item 5",
"desc": "sample desc"
},
{
"devID": "6",
"devName": "item 6",
"desc": "sample desc"
},
{
"devID": "7",
"devName": "item 7",
"desc": "sample desc"
},
{
"devID": "8",
"devName": "item 8",
"desc": "sample desc"
}
];
我有一个名为$scope.deleteList = {}
的空对象,selectAll()
填充了ID。
这是我的$scope.selectAll()
(添加了控制台日志,供我查看发生的事情):
$scope.selectAll = function(){
$scope.resultsToDelete = $scope.results.slice(($scope.currentPage * $scope.pageSize), $scope.pageSize);
console.log("$scope.results:", $scope.results);
console.log("$scope.currentPage:", $scope.currentPage);
console.log("$scope.pageSize:", $scope.pageSize);
console.log("$scope.currentPage * $scope.pageSize:", ($scope.currentPage * $scope.pageSize));
for (var i = 0; i < $scope.resultsToDelete.length; i++) {
var item = $scope.resultsToDelete[i];
$scope.devDelList[item.devID] = true;
}
};
($scope.currentPage * $scope.pageSize)
为我提供了列表下一页上第一个对象的索引。
这是我的分页:
$scope.pagination = function(itemList) {
$scope.currentPage = 0;
$scope.pageSize = 4;
$scope.numOfPages = Math.ceil(itemList.length / $scope.pageSize);
$scope.pageNumbersArray = [];
for (var i = 0; i <= $scope.numOfPages -1 ; i++) {
$scope.pageNumbersArray.push(i);
}
}($scope.results)
$scope.prev = function() {
if ($scope.currentPage > 0) {
$scope.currentPage = -- $scope.currentPage;
}
}
$scope.next = function() {
if ($scope.currentPage < $scope.numOfPages - 1 ) {
$scope.currentPage = ++ $scope.currentPage;
}
}
$scope.goToPage = function(pageNum) {
$scope.currentPage = pageNum;
}
我的问题在于结果数组中的.slice()
。它只适用于第一页 - $scope.currentPage = 0
时。只要$scope.currentPage = 1
,$ scope.results.slice()就会返回一个空数组。
$ scope.results.slice(0,4)返回4个项目的第一页的正确ID。
$ scope.results.slice(4,4)返回一个空数组。 (例如[]),它不会返回第二组4项
我错过了什么?
答案 0 :(得分:4)
$ scope.results.slice(4,4)返回一个空数组。 (例如[])
基于零的索引,在此之前结束提取。切片提取到 但不包括结束。
例如,切片(1,4)从第四个提取第二个元素 element(元素索引为1,2和3)。
因此,从 4 到 4 只能 0 。
你需要尝试
Math.pow(num,exponent).intValue()
答案 1 :(得分:1)
seconds参数不是长度,而是结束索引。
假设你有一个数组:
a = [1,2,3,4]
如果您想选择[3,4]
然后你必须用slice(2,4)
而不是slice(2,2)
您应该将代码修改为:
res = $scope.results.slice(($scope.currentPage * $scope.pageSize),
$scope.currentPage * $scope.pageSize + $scope.pageSize);
答案 2 :(得分:1)
<?php
namespace App\Mail\User;
use Illuminate\Bus\Queueable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use App\Modules\User\User;
class WelcomeEmail extends Mailable
{
use Queueable, SerializesModels;
/**
* @var Model
*/
public $user;
/**
* Create a new message instance.
* @param User $user
*/
public function __construct(User $user)
{
$this->user = $user;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->markdown('emails.user.registered');
}
}
将始终返回一个空数组。
anArray.slice(n, n)
的参数是slice
,其中(begin, end)
是起始索引,begin
是结束索引,而不是切片的长度。
在你的情况下,你会想要这样的东西:
end
答案 3 :(得分:1)
因为 Slice方法适用于基于零的索引 See documentation here
slice()方法返回数组部分的浅表副本 进入从头到尾选择的新数组对象(不包括结束)。
所以,对于var arr = [1,2,3,4];
begin:开始提取的从零开始的索引。
end:基于零的索引,在此之前结束提取。切片 提取但不包括结束。
所以对于例如。
arr.slice(1,3);
当我们说result is [2,3]
时,它意味着从索引1到索引4的所有元素也会排除索引4处的值,因此arr.slice(1,1);
和当我们说[]
时它从索引1到索引1的所有元素都会排除索引1处的值,因此结果为empty array
readLine
< / p>