【发布时间】:2016-04-20 11:19:03
【问题描述】:
我正在尝试在 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.
【问题讨论】:
-
faqData是一个对象。$scope.faqData = {};。除非您的服务正在改变它。 Slice 是数组可用的方法。 (尽管从技术上讲,数组是一个具有数字属性键并且与length有特殊关系的对象,但你明白我的意思) -
@ste2425 我的服务正在改变它。这里
.factory('Faq', function ($http) { return { get: function () { console.log("inside function"); return $http.get('/Json/faq.json'); } }; })。该服务正在返回一个对象数组 -
当你的 watcher 触发时你的 promise 已经解决了吗?也许您应该将
faqData变量默认为您打算使用的类型。如果手表在承诺解决之前被触发,您将尝试在一个对象上调用.slice,因为它当时还没有发生变异。 -
@ste2425 你说得对,我的观察者在我的承诺得到解决之前就被解雇了。谢谢。
-
如果这解决了您的问题,请在以后将其添加为其他人的答案。
标签: javascript arrays angularjs