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

标签 javascript arrays angularjs

我试图在 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 中做什么。

slice docs

关于javascript - 如何在angularJS中使用slice()方法pn对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36742187/

相关文章:

java - Java 对数组对象进行排序

javascript - 向 ion-radio 添加可点击按钮

javascript - 如何使用 $.ajax 成功刷新 ng-repeat

javascript - 根据 JavaScript 计算输出过滤表行

javascript - 重新加载页面后 IE 不保留它的滚动位置

c - 字符串转int数组

c - 指针变量的值和普通变量的地址有什么区别,C 中指针的特殊用途是什么?

javascript - 在 ember.js 中将操作从组件发送到路由

javascript - css 和 jquery 缺少元素背景颜色

javascript - ng-options 过滤器不起作用?