मेरे पास निम्न कोड है, जिसे http://jsfiddle.net/garukun/u69PT/ पर भी जोड़ा जा सकता है।कोणीयजेएस: माता-पिता का दायरा निर्देश में अद्यतन नहीं किया गया है (अलग-अलग दायरे के साथ) दो तरह बाध्यकारी
दृश्य:
<div data-ng-app="testApp">
<div data-ng-controller="testCtrl">
<strong>{{pkey}}</strong>
<span data-test-directive data-parent-item="pkey"
data-parent-update="update(pkey)"></span>
</div>
</div>
जे एस:
var testApp = angular.module('testApp', []);
testApp.directive('testDirective', function ($timeout) {
return {
scope: {
key: '=parentItem',
parentUpdate: '&'
},
replace: true,
template: '<div><p>{{key}}</p>' +
'<button data-ng-click="lock()">Lock</button>' +
'</div>',
controller: function ($scope, $element, $attrs) {
$scope.lock = function() {
$scope.key = 'D+' + $scope.key;
console.log('DIR :', $scope.key);
// Expecting $scope.$parent.pkey to have also been
// updated before invoking the next line.
$scope.parentUpdate();
// $timeout($scope.parentUpdate); // would work.
};
}
};
});
testApp.controller('testCtrl', function ($scope) {
$scope.pkey = 'golden';
$scope.update = function (k) {
// Expecting local variable k, or $scope.pkey to have been
// updated by calls in the directive's scope.
console.log('CTRL:', $scope.pkey, k);
$scope.pkey = 'C+' + k;
console.log('CTRL:', $scope.pkey);
};
});
मूल रूप से, मैं एक अलग क्षेत्र के साथ निर्देश, जिसमें मैं दो तरह से एक संपत्ति के लिए बाध्य कर रहा हूँ (key) सेट कर रहा हूं अभिभावक दायरे (पीकी) से, और माता-पिता के दायरे के संदर्भ में एक विधि (parentUpdate) को भी कॉल करने के लिए।
अब, निर्देश में एनजी-क्लिक ईवेंट हैंडलर के दौरान, मैं पैरेंट अपडेट विधि का आह्वान करना चाहता हूं और कुछ अंदर करना चाहता हूं। जब मैं उस विधि का आह्वान कर रहा हूं, तो मैं अपने माता-पिता के दायरे के मॉडल को अद्यतन करने की उम्मीद कर रहा हूं। लेकिन हकीकत में, यह नहीं है, और यह मुझे परेशान कर रहा है।
शायद यह मध्य में कुछ खोए गए $ पाचन चक्रों की वजह से है, क्योंकि $ टाइमआउट के साथ पैरेंट अपडेट कॉल को लपेटने की अपेक्षा की जाएगी।
क्या कोई गायब होने पर कुछ प्रकाश डाल सकता है? या पेरेंट अद्यतन सही तरीके से कैसे पहुंचाया जाए?
ठीक है, तो थोड़ा सा लक्ष्यीकरण ... आप सोच रहे हैं कि '$ scope.key = 'D +' + $ scope.key;' 'lock() 'फ़ंक्शन से' कोई प्रभाव नहीं प्रतीत होता है , सही? – jandersen