我需要我的AngularJS应用程序的设计帮助。AngularJS集中数据和宁静服务
我有一个工厂,它为我提供了一个资源对象,以一个宁静的Web服务。
product.factory("productResource", function ($resource) {
var resource = $resource("/fooo/rest/products/:id", {}, {
query: {
method: "GET",
isArray: true
}
});
return resource;
});
我有一个服务,它提供了一种方法来查询资源工厂的所有产品。
product.service("productDao", function (productResource) {
this.getProductModel = function() {
var data = productResource.query(function() {
});
return data;
}
});
的控制器调用该服务,来获取数据,他们需要:
控制器1
header.controller("header.selection.product", function ($scope, productDao) {
$scope.products = null;
productDao.getProductModel().$promise.then(function (result) {
$scope.products = result;
});
});
控制器2,3,4 ...
他们看起来几乎一样,但他们正在使用这些数据用于不同的目的。
现在我不知道一个正确的方法,实现从所有控制器访问的“数据源”。我不想对所有数据提出请求,对于每个控制器启动,它只应该进行一次。
如何自动更改所有其他控制器的数据,当产品在一个控制器中更新时,服务应该执行更新(尚未实现),更新成功时他们的“集中数据”应该更改,并且所有的控制器数据。
我读过关于使用rootScope达到这个目的,但有人说,不要仅仅创建工厂/服务。
我想使用资源对象,它使认为更容易,我如何共享控制器之间的数据,然后,以便每个控制器更改其数据,当另一个更改? – orbatschow
@Synturas虽然'$ http'更加灵活,并且不像看起来那么“困难”,我用'$ resource'服务更新了我的答案。希望它有帮助 –
是的,谢谢你这是一个很好的方法。 – orbatschow