Проблема с разбиением на страницы angularjs ng-table

У меня возникла проблема с ng-таблицей и разбиением на страницы. В основном у меня есть два набора данных, и пользователь может выбрать, какой из них отображается в таблице.

В первом наборе данных есть 2 страницы, а во втором наборе данных есть только одна страница. Теперь проблема заключается в том, что если я перехожу на страницу 2, а затем перехожу к набору данных 2, я получаю пустую таблицу без параметров разбиения по страницам.

Ниже создан плункер, в котором вы можете проверить это: http://plnkr.co/edit/0D4ih7bPNf3Jz87Rymc7

Мой код — это просто копирование и вставка из примера ngtable:

var app = angular.module('main', ['ngTable']).
controller('DemoCtrl', function($scope, $filter, ngTableParams) {

$scope.datasets = ["1","2"];
$scope.dataset = "1";
var data1 = [{name: "One", age: 50},
            {name: "Two", age: 43},
            {name: "Three", age: 27},
            {name: "Four", age: 29},
            {name: "Five", age: 34},
            {name: "Six", age: 43},
            {name: "Seven", age: 27},
            {name: "Eight", age: 29},
            {name: "Nine", age: 34},
            {name: "Ten", age: 43},
            {name: "Eleven", age: 27},
            {name: "Twelve", age: 29},
            {name: "Thirteen", age: 34},
            {name: "Fourteen", age: 43},
            {name: "Fifteen", age: 27},
            {name: "Sixteen", age: 29}];

var data2 = [{name: "Jacob", age: 50},
            {name: "Jacob", age: 43},
            {name: "Jacob", age: 27}];

var getData = function() {
    return $scope.dataset === "1" ? data1 : data2;
};
$scope.$watch("dataset", function () {
    $scope.tableParams.reload();
});         
$scope.tableParams = new ngTableParams({
    page: 1,            // show first page
    count: 10,          // count per page
    sorting: {
        name: 'asc'     // initial sorting
    }
}, {
    total: function () { return getData().length; }, // length of data
    getData: function($defer, params) {
        var filteredData = getData();
        var orderedData = params.sorting() ?
                            $filter('orderBy')(filteredData, params.orderBy()) :
                            filteredData;

        $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
    },
    $scope: { $data: {} }
});

});

Любые идеи приветствуются!

Спасибо, Кевин.


person kevfuzz    schedule 11.08.2014    source источник


Ответы (1)


http://plnkr.co/edit/Q3GLxP55bGgVB7I28kbY?p=preview

 $scope.$watch("dataset", function () {
          $scope.tableParams.$params.page=1;

            $scope.tableParams.reload();
        });
person sylwester    schedule 11.08.2014
comment
Круто, должно сработать. Я только что наткнулся на другой сценарий, у меня есть аналогичная проблема. Всего один набор данных, но в каждой строке есть значок удаления. Если пользователь находится на второй странице и удаляет все строки, он снова застревает. Любые идеи по этому поводу? - person kevfuzz; 11.08.2014