Angular 애플리케이션에서 다음 상황에 직면하고 있습니다. 여기에 몇 가지 조언이 있습니다.컨트롤러 간 데이터 공유, AngularJS
일부 제품을 보여주는 페이지가 있는데이 페이지는 'ProductsController'라는 컨트롤러에서 관리합니다. 이 컨트롤러에는 'showProductDetails'라는 메서드가 있습니다.이 메서드는 사용자가 특정 제품을 클릭하면 호출되며이 메서드의 목표는 제품의 세부 정보를 검색하고 모달 패널에 이러한 세부 정보를 표시하는 것입니다. 여기까지는 특별한 것이 없습니다. 문제는 모듈성 때문에 다른 컨트롤러를 모달 패널에 부착하고 새 컨트롤러에서이 모달 패널의 모든 로직 (이 경우 'ProductDetailController')을 관리하고 싶습니다. 문제는 모달 패널을 열기 전에 제품의 데이터를 검색하는 것이지만 두 번째 컨트롤러에서 첫 번째 컨트롤러의 범위에서이 데이터를 검색 할 때 이전에 검색 한 제품에 액세스 할 수 없습니다. angularJs의 컨트롤러간에 데이터를 공유하는 것은 서비스를 통해 이루어 지지만 상태없는 서비스가 어떻게 도움이되는지는 알지 못합니다.
이첫 번째 컨트롤러 :
app.controller('ProductsController', ['$scope','productsFactory','commonFactory','productsFactoryHelper','$filter','$modal',function ($scope,productsFactory,commonFactory,productsFactoryHelper,$filter,$modal)
{
$scope.showProductDetails = function (size,product) {
$scope.showLoader('Loading the details of the product. Please wait...');
productsFactoryHelper.Product.query({id:product.id},function(response)
{
$scope.selectedProduct=response;
$scope.hideLoader();
var modalInstance = $modal.open({
templateUrl: 'productDetail.html',
controller: 'ProductDetailController',
size: size
});
},function(error)
{
commonFactory.Pop('error','This product is not available at this moment. Please try again later. If the problem persists contact a system administrator');
$scope.hideLoader();
});
};
_init();
}]);
그리고 두 번째 컨트롤러 :
app.controller('ProductDetailController',['$scope','$modalInstance', function ($scope, $modalInstance) {
$scope.ok = function() {
$modalInstance.close();
};
$scope.cancel = function() {
$modalInstance.dismiss('cancel');
};
}]);
그래서 기본적으로 질문에서 어떻게 접근 할 수있다 여기에
내 코드가 더 나은 상황을 이해하는 것입니다 'ProductDetailController'를 'ProductsController'의 범위에있는 'selectedProduct'객체로 가져옵니다.도움 주셔서 감사합니다.
chooseProduct로 컨트롤러를 만들고 변수에 $ watch를 첨부 할 수 있습니까? 그리고 두 개의 컨트롤러에 서비스를 삽입 하시겠습니까? – cyan
[Angular : 컨트롤러간에 데이터 공유] 가능한 중복 (http://stackoverflow.com/questions/21919962/angular-share-data-between-controllers) –