我正在尝试在AngularJS中的对象数组上使用slice()方法,但是它表示' 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文件中获取数据并且它正在运行。
但是切片方法在控制台中不起作用它会给出错误" $ scope.faqData.slice" 不是方法。
答案 0 :(得分:2)
.slice
是一个可从数组原型中获得的方法。
您的faqData
被定义为普通< ol}对象。因此,它无法访问.slice
。
您的服务正在将faqData
变更为一个数组,但只允许您访问.slice
,这只是在它结算时。
所以,问题是你的观察者可能会在你的承诺解决之前解雇,这意味着你试图从普通对象调用slice
。
您应该将对象定义为将要使用它们的类型,避免在可能的情况下改变对象。
您的手表可能还需要处理您的承诺尚未解决的事实,这取决于您打算在观察者中做什么。