0
'use strict';
function NumbersCtrl(DAO, $rootScope, $scope, $filter, ngTableParams) {
$rootScope.getAllNumbers = function () {
    //get all

    $rootScope.errors.errorMessages=[];
     DAO.query({appName: $rootScope.appConfig.appName, token: $rootScope.appConfig.token, controller: 'numbers', action: 'list'},   
                $rootScope.loadingSite=true,
                function (result) {
         $rootScope.numberss = result;

         $scope.tableParams = new ngTableParams({
            page: 1,            // show first page
            count: 10,           // count per page
            sorting: {
                id : 'desc' // initial sorting
            }
     }, {
        total: $rootScope.numberss.length,
     getData: function($defer, params) {
            var putIt  = params.sorting() ? $filter('orderBy')( $rootScope.numberss, params.orderBy()): id;
            params.total(putIt.length);
               $defer.resolve(putIt.slice((params.page() - 1) * params.count(), params.page() * params.count()));
            // $rootScope.numberss = sendIt;
            //$rootScope.numberss=putIt.slice((params.page() - 1) * params.count(), params.page() * params.count());
            //$defer.resolve(putIt.slice((params.page() - 1) * params.count(), params.page() * params.count()));

            //$rootScope.numberss = putIt;
     }
     });
}

私はgrails-arrested-pluginに取り組んでおり、つまずきにぶつかったので、誰にでもアドバイスをいただければ幸いです:

上記は私のコントローラー呼び出しです - 情報をページ分割して戻す試みをいくつかコメントアウトしました - フィルタリングで注文しました。

これまでのところ、セミページネーションの試みが機能するようになりました。使用する場合:

$rootScope.numberss=putIt.slice((params.page() - 1) * params.count(), params.page() * params.count());

上記は実際には最初の10件の結果のみを返しますが、ページは返しません..

$defer.resolve(putIt.slice((params.page() - 1) * params.count(), params.page() * params.count()));

動作していないように見えますが、DAO はレスト コールであるため、これは文書化された方法ではありません。

use strict';
angular.module('services',['ngResource','ngTable']).
    factory('DAO', function($resource){
        return $resource('/:appName/:controller/:action',{
            format:'json', callback:'JSON_CALLBACK'},{
          ..
            'query': {method:'GET', params:{appName:'@appName', controller:'@controller', action:'@action', token:'@token'}, isArray: true, timeout:20000},
4

1 に答える 1

0

わかりましたので、私は現在、呼び出し/賛否両論の2つの方法でページネーションを機能させていますか? 私が読んだことから、最初に説明したメソッドは呼び出しが少なくなります:

修正に加えて、実際のフィルタリングはまだ機能していません。フィルターを修正するために何をする必要があるかを誰かが指摘できれば、それは素晴らしいことです:

したがって、ページの初期化

<div data-ng-controller="NumbersCtrl"  data-ng-init="getAllNumbers()">

次に、コントローラーはその上で機能を実行します

$rootScope.getAllNumbers = function () {
        //get all
        $rootScope.errors.errorMessages=[];
         DAO.query({appName: $rootScope.appConfig.appName, token: $rootScope.appConfig.token, controller: 'numbers', action: 'list'},   
            $rootScope.loadingSite=true,
            function (result) {
                $rootScope.tableParams = new ngTableParams({
                    page: 1,            // show first page
                    count: 10,           // count per page
                    sorting: {
                        id : 'desc' // initial sorting
                    }
                }, {
                    total: result.length,
                    getData: function($defer, params) {
                        $rootScope.numberss  = params.sorting() ? $filter('orderBy')(result, params.orderBy()): id;
                        //params.total(putIt.length);
                        $defer.resolve($rootScope.numberss.slice((params.page() - 1) * params.count(), params.page() * params.count()));
                        $rootScope.numberss=($rootScope.numberss.slice((params.page() - 1) * params.count(), params.page() * params.count()));
                    }
                });
                $rootScope.loadingSite=false;   
            },
            function (error) {
                $rootScope.errors.showErrors = true;
                $rootScope.errors.showServerError = true;
                $rootScope.errors.errorMessages.push(''+error.status+' '+error.data);
                $rootScope.loadingSite=false;
             });

    };

何も初期化していないため、このメソッドを使用することになりました。

<div data-ng-controller="NumbersCtrl" >

そして、このコントローラーアクションを呼び出します(ngtableのデフォルトの指示に従って-つまり、上記のメソッドにも存在するデフォルトの呼び出し:

$rootScope.tableParams = new ngTableParams({
    page: 1,            // show first page
    count: 10,           // count per page
    sorting: {
        id : 'desc' // initial sorting
    }
}, {
    getData: function($defer, params) {
        DAO.query({appName: $rootScope.appConfig.appName, token: $rootScope.appConfig.token, controller: 'numbers', action: 'list'},    
            $rootScope.loadingSite=true,
                function (result) {
                    $rootScope.numberss=result;
                    var putIt  = params.sorting() ? $filter('orderBy')($rootScope.numberss, params.orderBy()): id;
                    params.total(putIt.length);
                    $defer.resolve(putIt.slice((params.page() - 1) * params.count(), params.page() * params.count()));
                    $rootScope.numberss=(putIt.slice((params.page() - 1) * params.count(), params.page() * params.count()));
                    $rootScope.loadingSite=false;   
                },
                function (error) {
                    $rootScope.errors.showErrors = true;
                    $rootScope.errors.showServerError = true;
                    $rootScope.errors.errorMessages.push(''+error.status+' '+error.data);
                    $rootScope.loadingSite=false;
                });
    }
});

実際の修正は、延期中の最終呼び出しのようです。

$defer.resolve($rootScope.numberss.slice((params.page() - 1) * params.count(), params.page() * params.count()));
                            $rootScope.numberss=($rootScope.numberss.slice((params.page() - 1) * params.count(), params.page() * params.count()));

このテーブル呼び出しを含む HTML ページは次のとおりです。

https://github.com/vahidhedayati/testingarrested/blob/master/grails-app/views/numbers/list.gsp

角度コントローラーは次のとおりです。

https://github.com/vahidhedayati/testingarrested/blob/master/web-app/js/NumbersCtrl.js

このすべてを含むブランチをすぐに更新します-

したがって、ページネーションの機能を要約すると、フィルタリングではありません-それは今ではマイナーなものでなければなりません..

編集:ファイナライズするには-すべてが機能しています私は行方不明でした:

putIt = params.filter ? $filter('filter')( putIt, params.filter()) :  putIt;

最初の putIt の下 - 残りの呼び出しで機能する検索/ページネーション

于 2014-05-25T13:41:10.747 に答える