angularjs中,怎样复用一个Controller中的重复代码

比如有四个列表,布局几乎一样,只有细微的区别,Controller的代码自然也就非常类似了,比如只有请求参数不同。

initialize();

        $scope.refreshHub[$scope.REFRESH_METHOD[$scope.nowIndex]] = function () {
            $scope.model_request.pageNum = 1;
            business_XW1.requestNewsList($scope.model_request).then(
                function (okRs) {
                    $scope.list = okRs.response.parram;
                    setTimeout(function () {
                        $rootScope.loadMoreState = $scope.list.length >= $scope.model_request.pageSize;
                    },500);
                },$scope.errorCallback
            ).always(function () {
                $rootScope.$broadcast('scroll.refreshComplete');
            });
        };
        $scope.loadHub[$scope.LOAD_METHOD[$scope.nowIndex]] = function () {
            $scope.model_request.pageNum++;
            business_XW1.requestNewsList($scope.model_request).then(
                function (okRs) {
                    Array.prototype.push.apply($scope.list,okRs.response.parram);
                    $rootScope.loadMoreState = okRs.response.total > $scope.list.length;
                },$scope.errorCallback
            ).always(function () {
                $rootScope.$broadcast('scroll.infiniteScrollComplete');
            });
        };

        // helper methods ~
        function initialize() {
            $scope.model_request = new xw_model.Corporation();
            $scope.list = [];
        }

比如这段代码,这四个列表的Controller中,只有model_request参数不同,那么我该如何才能复用这段代码呢?

阅读 7k
5 个回答

把同样的逻辑封装成一个服务

app.factory('yourFact', function() {
    this.fn1 = function() {};
    this.fn2 = function() {};
})

如果要在controller中使用,通过下面的方式注入即可

app.controller('xxxcontroller', function($scope, yourFact) {
    // 服务其实返回的是一个单例对象,因此直接调用里面的方法即可
    yourFact.fn1();
})

放到service里,再调用啊,或者封装成一个指令啊

本人用的ui-router 直接在里面传值进去,对值进行判断,取得相应的方法获取数据

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题