我是AngularJS的新手,我正在努力确保我做的一切都正确。 我刚刚遇到了一些我认为可以改进的东西,所以我想我会在这里问一下。 我有2个控制器:
.controller('RecentOrdersController', ['OrderService', function (service) {
var self = this; // store our controller in a variable
self.loading = true; // This is what the ajax loading gif looks at to see if it should be displayed
self.orders = []; // Our orders array
service.recent(30).then(function (response) { // Get the 30 most recent orders
for (var i = 0; i < response.data.length; i++) {
var order = response.data[i]; // Store the order in a variable (for use later)
var desciption = service.getDescription(order); // Get our description
order.description = desciption; // Set our order description
self.orders.push(order); // Push our order to our array
}
self.loading = false; // Set our loading flag to false (hide the ajax loading gif);
});
}])
.controller('SyncFailureOrdersController', ['OrderService', function (service) {
var self = this; // store our controller in a variable
self.loading = true; // This is what the ajax loading gif looks at to see if it should be displayed
self.orders = []; // Our orders array
service.syncFailures(30).then(function (response) { // Get the 30 most sync failures
for (var i = 0; i < response.data.length; i++) {
var order = response.data[i]; // Store the order in a variable (for use later)
var desciption = service.getDescription(order); // Get our description
order.description = desciption; // Set our order description
self.orders.push(order); // Push our order to our array
}
self.loading = false; // Set our loading flag to false (hide the ajax loading gif);
});
}])
如您所见,这两个控制器几乎完全相同。唯一的区别是它们从同一服务中调用不同的功能。我想做的是(以某种方式)创建一个基本控制器或类似的东西,我不会那么多重复代码。
事实上,我的大多数控制器都有一个 self.loading 变量,所以如果我能创建一个总是暴露该变量的基本控制器,那将是件好事。
如果我有点意思,请告诉我如何才能使我的代码更好。
答案 0 :(得分:1)
您应该创建一个service
(或factory
),您可以在其上放置共享的代码。然后每个控制器只需要使用不同的参数调用此服务。不要试图创建一个上位控制器,服务是要走的路。