我如何将服务响应数据输入 md 对话框 angularjs?
how do i get the service response data into the md dialog angularjs?
我创建了这样的自定义服务
app.service('userService', function($http,UrlService) {
return {
init: function(callback) {
$http.get(UrlService.baseUrl +'/api/users/list').then(function(user_response) {
callback(user_response);
});
}
}
})
在我的项目主控制器中,我使用这样的方法来获取 angular material 设计模式。
$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
});
};
为 angular material 文档中的对话框创建了另一个控制器,如下所示
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);
});
}
}
}
现在,我需要在 DialogController
中获取 user_response
数据。如果我将 console.log('$scope.users')
放入此 userservice.init
函数中,我可以获得数据。但不在它之外。如何获取 userService.init 函数之外的响应数据
userService.init(function(user_response) {
$scope.users = user_response.data;
}); //this is added in DialogController
主要目的是获取post请求回复邮件功能中的user.comlaint_id
。 user.complaint_id 是 user_response 的一部分
任何人都请帮助我。谢谢
这是解决方案
userService.init(function(user_response) {
$scope.users = user_response.data;
$scope.init();
});
$scope.init = function() {
You can access $scope.users here
}
调用您需要 $scope.users
的任何方法而不是 init()
$http.get
调用returns一个承诺,你可以直接使用它。
app.service('userService', function($http,UrlService) {
return {
init: function(callback) {
return $http.get(UrlService.baseUrl +'/api/users/list');
}
}
});
控制器:
function Dialog($scope,$rootScope, $mdDialog,userService,UrlService,$http) {
// console.log(userService.init());
init();
function init() {
userService.init().then(function(response) {
$scope.users = response.data;
});
}
}
这还有更容易处理错误的优点:
function Dialog($scope,$rootScope, $mdDialog,userService,UrlService,$http) {
// console.log(userService.init());
init();
function init() {
userService.init().then(function(response) {
$scope.users = response.data;
}, function(error) {
// handle error
});
}
}
您应该阅读 angular/javascript 承诺及其链接机制:angular promises
我创建了这样的自定义服务
app.service('userService', function($http,UrlService) {
return {
init: function(callback) {
$http.get(UrlService.baseUrl +'/api/users/list').then(function(user_response) {
callback(user_response);
});
}
}
})
在我的项目主控制器中,我使用这样的方法来获取 angular material 设计模式。
$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
});
};
为 angular material 文档中的对话框创建了另一个控制器,如下所示
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);
});
}
}
}
现在,我需要在 DialogController
中获取 user_response
数据。如果我将 console.log('$scope.users')
放入此 userservice.init
函数中,我可以获得数据。但不在它之外。如何获取 userService.init 函数之外的响应数据
userService.init(function(user_response) {
$scope.users = user_response.data;
}); //this is added in DialogController
主要目的是获取post请求回复邮件功能中的user.comlaint_id
。 user.complaint_id 是 user_response 的一部分
任何人都请帮助我。谢谢
这是解决方案
userService.init(function(user_response) {
$scope.users = user_response.data;
$scope.init();
});
$scope.init = function() {
You can access $scope.users here
}
调用您需要 $scope.users
的任何方法而不是 init()$http.get
调用returns一个承诺,你可以直接使用它。
app.service('userService', function($http,UrlService) {
return {
init: function(callback) {
return $http.get(UrlService.baseUrl +'/api/users/list');
}
}
});
控制器:
function Dialog($scope,$rootScope, $mdDialog,userService,UrlService,$http) {
// console.log(userService.init());
init();
function init() {
userService.init().then(function(response) {
$scope.users = response.data;
});
}
}
这还有更容易处理错误的优点:
function Dialog($scope,$rootScope, $mdDialog,userService,UrlService,$http) {
// console.log(userService.init());
init();
function init() {
userService.init().then(function(response) {
$scope.users = response.data;
}, function(error) {
// handle error
});
}
}
您应该阅读 angular/javascript 承诺及其链接机制:angular promises