2013-12-10 6 views
6

मेरे पास एक ऑब्जेक्ट है जिसे मैं निर्देश के अंदर देखना चाहता हूं।
निर्देश अलग-अलग गुंजाइश है और ऑब्जेक्ट एक अभिभावक नियंत्रक से आता है।अभिभावक नियंत्रक से अलग-अलग दायरे में बच्चे को निर्देशित करने के लिए ऑब्जेक्ट पास करना

डोम:
<div hello-directive obj-to-track="{{myObj}}"></div>

निर्देशक जे एस:

scope:{ 
    objToTrack:'@' 
}, 
link:function(scope,element,attrs){ 
    scope.$watch(function(newValue){ 
     //Inside here, newValue is a JSON string 
     //So is scope.objToTrack 
    }); 
} 

अलावा JSON.parse()
धन्यवाद माता पिता नियंत्रक से एक वास्तविक वस्तु प्राप्त करने के लिए वैसे भी वहाँ है।

+1

आप वस्तु और JSON के बीच उलझन में हो रही हो रहे हैं:

scope.$watch("objToTrack", function(newval, oldval) { ... }); 

के रूप में यह प्रयोग करें। JSON एक डेटा वितरण स्ट्रिंग प्रारूप है। आपके ऐप के अंदर आप उस डेटा से प्राप्त वस्तुओं और सरणी से निपट रहे हैं जो – charlietfl

+0

वितरित किए गए थे, यह सुनिश्चित नहीं है कि आप क्यों सोचते हैं कि मैं उलझन में हूं। – Francisc

+0

ठीक है ... टिप्पणी की व्याख्या करें 'अंदर के अंदर, नया वैल्यू एक JSON स्ट्रिंग है'। यह – charlietfl

उत्तर

8

बस "=" बंधन का उपयोग करें:

scope:{ 
    objToTrack: "=" 
} 

हमेशा की तरह देखो:

<div hello-directive obj-to-track="myObj"></div> 
+3

मुझे पता है, लेकिन यह दो-तरफा बाध्यकारी सक्षम बनाता है। यह एक * विशाल * मुद्दा नहीं है, लेकिन यदि संभव हो तो मैं निर्देश को इसे लिखने में सक्षम नहीं होना चाहूंगा। यदि यह संभव नहीं है, तो इसे करना होगा। – Francisc

+0

आप writting को अस्वीकार नहीं कर सकते - जब तक कि 'myObj' एक "आदिम" मान न हो। मेरा मतलब है कि यदि आप 'myObj' के संदर्भ की प्रतिलिपि पास करते हैं, तो निर्देश के पास अभी भी 'myObj' के वास्तविक सदस्यों तक पहुंच है। यह किया जा सकता है यदि आप निर्देश को पास करने से पहले ऑब्जेक्ट को 'angular.copy()' ऑब्जेक्ट किया है, संभवतः '' 'और' बाध्यकारी 'के संयोजन में, लेकिन यह शायद अधिक बोझिल है। –

+0

ठीक है, धन्यवाद। मैं बस इसे बदलने के लिए अपने निर्देश से पूछूंगा। :) – Francisc

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

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