2012-10-23 21 views
5

मेरे पास एक विशिष्ट सीआरयूडी ऐप है जिसमें सूची दृश्य के साथ-साथ विस्तृत दृश्यों के लिए अलग-अलग मार्ग और नियंत्रक हैं।सूची दृश्य से डेटा को angular.js में विस्तृत दृश्य में

सूची के लिए डेटा $resource का उपयोग करके पुनर्प्राप्त किया गया है।

वर्तमान में मेरे विवरण में नियंत्रक मैं $resource का उपयोग कर सर्वर से आइटम लाता हूं जिसके परिणामस्वरूप अतिरिक्त http अनुरोध होता है।

इसके बजाय, क्योंकि मेरी सूची नियंत्रक में पहले से ही वह आइटम है जिसे मैं संपादित कर रहा हूं, मैं इस आइटम को सूची नियंत्रक से विस्तार नियंत्रक तक पास करना चाहता हूं।

लेकिन मुझे नहीं पता कि कैसे। मैं दोनों विचारों के लिए एक एकल नियंत्रक बना सकता हूं लेकिन यह सही नहीं लगता है।

कृपया मदद करें।

उत्तर

4

आप नियंत्रकों के बीच डाटा साझा करने के एक सेवा का उपयोग कर सकते हैं:

उदाहरण: https://groups.google.com/d/msg/angular/IjKY_CRyRno/kP0M_LTzOTkJ

या एक बेला मैं कुछ समय पहले लिखा था: 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

धन्यवाद, कारखाने में आप एक संलग्न $ रूटशॉप के लिए शब्दकोश। लेकिन एक साझा सेवा का उद्देश्य रूट स्कोप प्रदूषण से बचने के लिए है। तो अगर मुझे रूट स्कोप में कुछ संलग्न करना है, तो मैं बस एक साझा सेवा का उपयोग नहीं कर सकता लेकिन सीधे $ रूटस्कोप का उपयोग कर सकता हूं, नहीं? क्या आप इसे समझा सकते हैं? – akonsu

+0

हाँ यह खराब डिज़ाइन है, आप सही हैं, आपको नियंत्रक कोड से नियंत्रक स्कॉप्स में सेवा डेटा संलग्न करना चाहिए :) – Guillaume86

+0

यह अत्यधिक जटिल लगता है। यहां एक बहुत ही बुनियादी उदाहरण दिया गया है: http://jsfiddle.net/HarzR/ –

संबंधित मुद्दे