我是角色的新手,我仍然按照教程和东西来解决问题。我需要以下帮助。 我有一个看起来像这样的控制器。
app.controller('ScheduleBooking', ['$http', function($http){
var schedule = this;
schedule.databooking = [];
$http.post('../getbookings.json').
success(function(data, status, headers, config) {
schedule.databooking = data;
}).
error(function(data, status, headers, config) {
console.log('failed');
});
}]);
一个控制器,它调用$ http服务来获取预订列表,在HTML中我用ng-repeat填充响应。
我有另一个这样的控制器。
app.controller('MakeBooking', ['$http', function($http){
var makeBooking = this;
//somecode here
$http.post('../MakeBooking.json?name=burhan').
success(function(data, status, headers, config) {
// I WANT TO REFRESH THE LIST OF BOOKINGS.
//I am looking a way to call scheduleBooking controller so that
//it can make http call and refresh the list of booking in html.
}).
error(function(data, status, headers, config) {
console.log('failed');
});
}]);
所以场景是:当页面加载客户应该看到他已经完成的所有预订。当他预订时,会调用http服务进行预订,并且在此服务成功回拨中我想做一些事情,以便它可以通过调用Schedule预约控制器中定义的http服务来刷新预订列表。 也许我可以用BROADCAST和ON方法做到这一点。但我不确定。我已经在JQuery编写的应用程序中发生了很多类似的事情。 做这个的最好方式是什么?可能是我完全错了,还有其他更好的办法。 你们有什么建议?
答案 0 :(得分:1)
由于ScheduleBooking似乎没有比调用端点做更多的事情,最好的方法是将其转换为服务并在每个控制器中注入此服务,您需要调用特定方法(或从中获取数据),如下所示:
app.factory('ScheduleBookingSerice', ['$http', function($http){
var schedule = this;
schedule.getBookings = function(callback){$http.post('../getbookings.json').
success(function(data, status, headers, config) {
callback(data);
}).
error(function(data, status, headers, config) {
console.log('failed');
});
}
return schedule;
}]);
app.controller('MakeBooking', ['$http', 'ScheduleBookingSerice', function($http, ScheduleBookingSerice){
var makeBooking = this;
//somecode here
$http.post('../MakeBooking.json?name=burhan').
success(function(data, status, headers, config) {
ScheduleBookingSerice.getBookings(function success(data){
//operate on your data here
});
}).
error(function(data, status, headers, config) {
console.log('failed');
});
}]);
答案 1 :(得分:0)
在这篇文章中查看Kmdsax答案。
How can I pass some data from one controller to another peer controller