如何将服务响应数据导入md对话框angularjs?

时间:2016-05-12 11:26:44

标签: javascript angularjs material-design angularjs-material

我已经创建了像这样的自定义服务

  app.service('userService', function($http,UrlService) {
    return {
        init: function(callback) {
            $http.get(UrlService.baseUrl +'/api/users/list').then(function(user_response) {
                callback(user_response);

            });
        }
    }
})

在我的项目主控制器内部,我使用了这样的方法来获得角度材料设计模型。

  $scope.replyComplaint = function(user,complaint_id) {

        complaint_id=user._id;
        console.log(complaint_id)
        $mdDialog.show({
                controller: DialogCtrl,
                templateUrl: 'submodules/user_management/replydialog.html',
                resolve: { complaint_id : function() {return complaint_id;} },
                 locals: {
                   users: $scope.users
                 },
                parent: angular.element(document.body),
                clickOutsideToClose: true,
            })
            .then(function(response) {
                $scope.response = response;
                console.log(response);
            }, function() {
                //fail
            });
    };

为角度材料文档创建另一个对话框控件,如下所示

function DialogCtrl($scope, $rootScope, $mdDialog, users,complaintService, UrlService, $http) {
    complaintService.init(function(complaint_response) {
           $scope.complaints = complaint_response.data;
           $scope.getUsers();
        });

$scope.getUsers = function(complaint_id) {
     console.log(complaint_id);
    $scope.hide = function() {
        $mdDialog.hide();
    };
    $scope.cancel = function() {
        $mdDialog.cancel();
    };
    $scope.replyMail = function(complaint_id) {
             console.log(complaint_id);
        $http.post(UrlService.baseUrl + '/api/complaints/complaint/'+complaint_id , {
                complaint: "replyText"
            }, $scope)
            .then(function(response) {
                console.log(name);
                $state.reload();
            }, function(response) {
                console.log(name);
            });
    }
}
}

现在,我需要获取user_response中的DialogController数据。如果我将console.log('$scope.users')置于此userservice.init函数内,我可以获取数据。但不是在它之外。如何在userService.init函数之外获取响应数据

 userService.init(function(user_response) {
        $scope.users = user_response.data; 
    });        //this is added in DialogController

主要内容是在回复邮件功能的帖子请求中获取user.comlaint_id。 user.complaint_id是user_response的一部分 有人请帮助我。感谢

1 个答案:

答案 0 :(得分:1)

这是解决方案

userService.init(function(user_response) {
    $scope.users = user_response.data;
    $scope.init();
});

$scope.init = function() {
You can access $scope.users here
}

调用任何方法而不是需要$ scope.users

的init()