एंगुलरजेएस का उपयोग करके विशेषता बदलें। मेरे पास एक निर्देश है कि मैं दो तरह के डेटा बाइंडिंग करना चाहता हूं। निर्देश में "सक्रिय" नामक एक विशेषता होगी। प्रारंभ में, "सक्रिय" का मान "1" होगा।निर्देशक
निर्देशक का लिंक फ़ंक्शन जांच करेगा कि "सक्रिय" "1" के बराबर है या नहीं। यदि ऐसा है, तो यह "सक्रिय" को 0 पर बदल देगा, लेकिन कुछ अन्य सामान करें।
बाद में, यदि मैं नियंत्रक में कुछ सामान फिर से करने का निर्देश चाहता हूं, तो मैं फिर से "सक्रिय" को "1" में बदल दूंगा। चूंकि निर्देश में घड़ी है, यह चक्र को दोहराएगा।
दुर्भाग्यवश, हर बार जब मैं ऐसा करता हूं, तो मुझे "अभिव्यक्ति '0' निर्देश के साथ प्रयोग किया जाता है 'testDirective' असाइन करने योग्य नहीं है!" या "गैर-असाइन करने योग्य मॉडल अभिव्यक्ति: 1 (निर्देश: testDirective)"।
<body ng-app="app">
<test-directive activate="1"></test-directive>
</body>
यहाँ जेएस है:
यहाँ HTML है
var app = angular.module('app', []);
app.directive('testDirective', function() {
return {
restrict: 'E',
scope: {
activate : '='
},
link: function(scope, elem, attrs, controller) {
var el = elem[0];
var updateContent = function() {
el.innerText = 'Activate=' + scope.activate;
};
updateContent();
attrs.$observe('activate', function() {
console.log('Activate=' + scope.activate);
if(scope.activate == '1') {
scope.activate = '0'
updateContent();
}
});
}
}
});
यहाँ
यह jsFiddle पर है: http://jsfiddle.net/justbn/mgSpY/3/
मैं निर्देश के विशेषता में संग्रहीत मूल्य नहीं बदल सकते हैं क्यों ? मैं 2 तरह बाध्यकारी का उपयोग कर रहा हूँ।
दस्तावेज़ कहते हैं, "यदि मूल दायरे की संपत्ति मौजूद नहीं है, तो यह एक NON_ASSIGNABLE_MODEL_EXPRESSION अपवाद फेंक देगा।"
नोट: अद्यतन सामग्री ठीक से "सक्रिय" का मान दिखाती है। हालांकि, "सक्रिय" का मान "" अद्यतन नहीं होता है।
हालांकि यह मेरे लिए कोई समझ नहीं आता है क्योंकि मूल दायरे की संपत्ति मौजूद है।
कोई विचार?
dluz: मैंने माइकल को एक समाधान समाधान के लिए जवाब दिया था। लेकिन मैंने इसे अभी बदल दिया है। आपने इसे समझाया ताकि मैं इसे बेहतर समझ सकूं। बहुत बहुत धन्यवाद! – Justin
जस्टिन: मदद करने में खुशी! :) –
यह मेरे लिए जवाब का हिस्सा था। मुझे भी गुंजाइश चलाना पड़ा। $ इसे लागू करने के बाद लागू करें(), या $ घड़ी ट्रिगर नहीं होगी। – LucasBeef