0

私はocLazyLoad依存性注入を使用し、オンデマンドで CSS と JS をロードします。stateデータが読み込まれるまでUI-Router を変更しません。またRestangular、APIを接続するために使用します。

解決状態から Restangular 関数を呼び出す方法は? それは私のルートです:

.state('admin.users',{
    url: "/users",
    templateUrl: "user/views/users.html",
    controller:'UserListCtrl',
    resolve: {
        dep: ['$ocLazyLoad',
            function( $ocLazyLoad ){
                return $ocLazyLoad.load(['UserService.js']).then(
                    function(){
                        return $ocLazyLoad.load(['UserListCtrl.js']);
                    }
                );
            }],
       resolvedItems: userlist()
    }
})

そして私UserListCtrlは:

app.controller('UserListCtrl',function($scope,UserService){  

    /*
     * Get all users
     */
    userlist = function(){
        UserService.list().then(function(data){
             $scope.users = data;
             $scope.pagination = $scope.users.metadata;
             $scope.maxSize = 5;
        });
    }
})

そして私UserServiceは:

angular.module('app').service('UserService', function($rootScope, Restangular) {
    /*
     * Build collection /user
     */
    var _userService = Restangular.all('user');


    /*
     * Get list of users
     */
    this.list = function() {
        // GET /api/user
        return _userService.getList();
    };
})
4

1 に答える 1

1

構成コンポーネントでコントローラーから関数を呼び出すことはできません。ページを開くためのバックエンド応答を待機するには、ui-router の解決機能を使用する必要があります。

すでに定義resolvedItemsしているので、そこに userList リクエストを作成し、このようなレスポンスを解決してください...

resolve: {
    dep: ['$ocLazyLoad',
        function( $ocLazyLoad ){
            return $ocLazyLoad.load(['UserService.js']).then(
                function(){
                    return $ocLazyLoad.load(['UserListCtrl.js']);
                }
            );
        }],
   resolvedItems: ['UserService', function(UserService){
            return UserService.list().then(function(response){
                return response;
            })
        }]
}

その後、コントローラーに注入resolvedItemsする必要があります。リクエストが完了するまでページは表示されません...

于 2016-04-14T01:04:15.800 に答える