我试图在 AngularJS 中的对象数组上使用 slice() 方法,但它说“切片不是方法”。
这是代码
.controller('AppCtrl', function ($scope, Faq) {
$scope.filteredFaqData = [];
$scope.currentPage = 1;
$scope.numPerPage = 5;
$scope.maxSize = 3;
$scope.faqData = {};
Faq.get().then(function (msg) {
$scope.faqData = msg.data;
});
$scope.$watch('currentPage + numPerPage', function () {
var begin = (($scope.currentPage - 1) * $scope.numPerPage)
, end = begin + $scope.numPerPage;
$scope.filteredFaqData = $scope.faqData.slice(begin, end);
});
});
我正在使用服务从 $scope.faqData
中的 json 文件获取数据,它正在运行。
但是 slice 方法在控制台中不起作用,它给出错误 "$scope.faqData.slice" is not a method。
最佳答案
.slice
是数组原型(prototype)中可用的方法。
您的faqData
被定义为普通的'ol 对象。因此它无法访问 .slice
。
您的服务正在将 faqData
转变为一个数组,但让您可以访问 .slice
,这仅在它解析时发生。
所以,问题是你的观察者可能会在你的 promise 解决之前触发,这意味着你试图从普通对象调用 slice
。
你应该将你的对象定义为你将使用它们的类型,尽可能避免改变对象。
您的 watch 可能还需要处理您的 promise 尚未解决的事实,这取决于您打算在 watcher 中做什么。
关于javascript - 如何在angularJS中使用slice()方法pn对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36742187/