आप गुंजाइश पर एक मूल्य निर्धारित करना चाहते हैं, लेकिन संपत्ति (आगे समय की) का नाम पता नहीं है, तो आप object[property]
सिंटैक्स का उपयोग कर सकते हैं:
scope[attrs.myNgDirective] = 'newValue';
तो में स्ट्रिंग विशेषता में एक बिंदु होता है (उदाहरण के लिए myObject.myProperty
), यह काम नहीं करेगा; आप $eval
का उपयोग एक काम करने के लिए कर सकते हैं:
// like calling "myscopevalue = 'newValue'"
scope.$eval(attrs.myNgDirective + " = 'newValue'");
[अपडेट: आप वास्तव में $eval
के बजाय $parse
उपयोग करना चाहिए। ।
app.directive('ngMyDirective', function() {
return {
scope: {
theValue: '=ngMyDirective'
},
link: function(scope, element, attrs) {
// will automatically change parent scope value
// associated by the variable name given to `attrs.ngMyDirective`
scope.theValue = 'newValue';
}
}
});
आप this Angular/jQuery color picker JSFiddle example में इस का एक उदाहरण देख सकते हैं, जहां scope.color
को बताए निर्देश के अंदर अपने आप अपडेट: यदि आप एक अलग गुंजाइश उपयोग कर रहे हैं Mark's answer देखें]
, आप =
एनोटेशन का उपयोग कर सकते परिवर्तक नियंत्रक के दायरे पर निर्देश पारित किया।
स्रोत
2013-05-11 06:29:11
दायरा [attrs.myNgDirective] = 'newValue'; काम किया! हालांकि myNgDirective का मान सीधे दायरे पर होना चाहिए, न कि दायरे के उप-वस्तु। जो – Anton
समझ में आता है मेरा मानना है कि आप ऑब्जेक्ट नोटेशन के लिए असाइनमेंट अभिव्यक्ति के साथ '$ eval' करने में सक्षम होना चाहिए; मैं अपना जवाब अपडेट करूंगा। –
जो ठंडा होगा। कुछ गुंजाइश की तरह। $ eval (attrs.ngMyDirective = 'new value')? – Anton