5

मैं कोणीय 1.5.5

मैं d3js कुछ .floating-node साथ और प्रत्येक के लिए बनाने रहा हूँ के साथ एक component based app परियोजना का निर्माण कर रहा हूँ के माध्यम से नए गुंजाइश हो और एक अंदर संलग्न संकलित घटक

nodeEnter.each(() => { 
     let childScope = this.$scope.$new(); 
     childScope.test = "test"; 
     let compiled = this.$compile('<mycomponent></mycomponent>')(childScope); 
     (this.mainContainer).append(compiled); 
    }); 

कोड काम का यह हिस्सा पूरी तरह से:

कोड के इस भाग की तरह लग रहे।

और यह mycomponent

export default class Mycomponent { 
    constructor($scope) { 
     console.log($scope.test);   // undefined 
     console.log($scope.$parent.test); // test 
    } 
} 
Mycomponent.$inject = ["$scope"]; 

है लेकिन जब मैं अपने mycomponent घटक में मिलता है। मुझे सही $scope नहीं मिल रहा है।

मैं $id की जाँच की और समझते हैं कि childScope.$idMycomponent$scope.$id += 1

में है मैं जानता हूँ कि मैं $scope.$parent साथ के माध्यम से प्राप्त कर सकते हैं, लेकिन मैं अवांछनीय $scope पैदा करेगा, और यह वास्तव में एक पाश में की सराहना की नहीं है।

तो मैं वही $scope कैसे प्राप्त कर सकता हूं?

उत्तर

1

आपको अपने मामले में $scope.$new() का उपयोग करने की आवश्यकता नहीं है क्योंकि $compile पहले से ही स्कोप का एक नया उदाहरण बना रहा है।

आपकी समस्या का समाधान करने के लिए आसान तरीका है एक querySelector उपयोग करने के लिए है, मैं निम्नलिखित कोड की तरह कुछ कर रही लगता है कि आप की मदद करनी चाहिए:

newScope = angular.element(document.querySelector("#myId")).isolateScope();

इस तरह से आप अब newScope के माध्यम से डेटा पास करने के लिए सक्षम होना चाहिए ।

2

एक गलतफहमी प्रतीत होती है। .component हमेशा अपने स्वयं के, अलग-अलग दायरे बनाएगा और आप घटकों में $scope का उपयोग नहीं करेंगे। अगर आपको लगता है कि यह आपके मामले में बिल्कुल जरूरी है, तो .directive का उपयोग करें। हालांकि मैं आपके घटक को उचित रूप से फिर से डिजाइन करने की अनुशंसा करता हूं।

+0

आप सही हैं! तो मैंने एक नया '$ स्कोप 'नहीं बनाया और मैंने' $ compile' द्वारा बनाए गए एक का उपयोग किया। लेकिन प्रोबम अब अलग है, मैं अपने पहले स्कोप को (पहले) नियंत्रक से कैसे प्राप्त कर सकता हूं? –

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