AngularJSのオブジェクト配列に対してslice()メソッドを使用しようとしていますが、そのスライスはメソッドではありません。ここでangularJSのslice()メソッドpnオブジェクト配列の使い方
は私がサービスを使用して$scope.faqData
でJSONファイルからデータを取得していますし、それが働いているコード
.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.slice"はメソッドではありません。
「faqData」はオブジェクトです。 '$ scope.faqData = {};'。あなたのサービスがそれに変異を起こさない限り。 [スライス](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/slice)は、配列で使用できるメソッドです。 (技術的には、配列は数値プロパティキーと 'length'との特別な関係を持つオブジェクトですが、私の得点を得ます) – ste2425
@ ste2425私のサービスはそれを変更しています。ここで '.factory( 'Faq'、function($ http){ return { get:function(){ console.log("関数内 "); return $ http.get( '/ Json/faq.json '); } }; }) '。サービスはオブジェクトの配列を返しています – Shahzad
あなたの約束がウォッチャーが発生するまでに解決しましたか?おそらく 'faqData'変数を、それと一緒に使うつもりの型にデフォルトするべきでしょう。約束が解決される前に時計が起動された場合、その時点でオブジェクトが突然変更されていないので、 '.slice'を呼び出すことになります。 – ste2425