2012-10-23 29 views
5

Liste görünümünün yanı sıra ayrıntı görünümleri için ayrı rotalar ve denetleyicilere sahip tipik bir CRUD uygulamasına sahibim.Liste görünümünden ayrıntı görünümünden angular.js'de veri geçirme

Listenin verileri $resource kullanılarak alınır.

Şu anda ayrıntılı görünüm denetleyicimde öğe $resource kullanarak sunucudan getiriyor ve bu da fazladan bir http isteği ile sonuçlanıyor.

Bunun yerine, liste denetleyicimde zaten düzenleme yaptığım öğeye sahip olduğum için, bu öğeyi liste denetleyicisinden ayrıntı denetleyicisine iletmek istiyorum.

Ama nasıl olduğunu bilmiyorum. Her iki görünüm için de tek bir denetleyici yapabilirim, ancak bu doğru görünmüyor.

Lütfen

Yardım edin.

cevap

4

Sen denetleyicileri arasında veri paylaşımı için bir hizmet kullanabilirsiniz:

exemple: https://groups.google.com/d/msg/angular/IjKY_CRyRno/kP0M_LTzOTkJ

yoksa bir süre önce yazdığı bir keman: http://jsfiddle.net/XqDxG/169/

myModule.factory('mySharedService', function($rootScope) { 
    var sharedService = {}; 
    sharedService.data = {}; 
    sharedService.data.message = ''; 

    return sharedService; 
}); 

function ControllerZero($scope, sharedService) { 
    // expose service data to angular scope 
    $scope.sharedData = sharedService.data; 

    $scope.handleClick = function(msg) { 
     sharedService.data.message = msg;    
    }; 

    $scope.$watch('sharedData.message', function(msg) { 
     $scope.message = msg; 
    }); 
} 

function ControllerOne($scope, sharedService) { 
    $scope.sharedData = sharedService.data; 

    $scope.$watch('sharedData.message', function() { 
     $scope.message = 'ONE: ' + sharedService.data.message; 
    }); 
} 
+0

sayesinde fabrikada bir iliştirmek $ rootScope'a sözlük. Ancak paylaşılan bir hizmetin amacı kök kapsam kirliliğinden kaçınmaktır. Öyleyse, root kapsamına bir şey iliştirmek zorunda kalırsam, paylaşılan bir hizmeti kullanamıyorum ama doğrudan $ rootScope kullanabilirim, hayır? Bunu açıklar mısınız? – akonsu

+0

evet haklısınız, doğru değilsiniz, kontrolör kapsamındaki servis verilerini kontrolör kodundan eklemelisiniz :) – Guillaume86

+0

Bu çok karmaşık görünüyor. İşte çok basit bir örnek: http://jsfiddle.net/HarzR/ –

İlgili konular