如何在angularJS中使用slice()方法pn对象数组

时间:2016-04-20 11:19:03

标签: javascript arrays angularjs

我正在尝试在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" 不是方法。

1 个答案:

答案 0 :(得分:2)

.slice是一个可从数组原型中获得的方法。

您的faqData被定义为普通< ol}对象。因此,它无法访问.slice

您的服务正在将faqData变更为一个数组,但只允许您访问.slice,这只是在它结算时。

所以,问题是你的观察者可能会在你的承诺解决之前解雇,这意味着你试图从普通对象调用slice

您应该将对象定义为将要使用它们的类型,避免在可能的情况下改变对象。

您的手表可能还需要处理您的承诺尚未解决的事实,这取决于您打算在观察者中做什么。

slice docs