$watch
अंदर डेटा में हेरफेर करते समय (जैसे डेटा सम्मिलित करना या निकालना) मैं एक कोणीय निर्देश में एक चर को कैसे ट्रिगर कर सकता हूं , लेकिन उस चर के लिए एक नई वस्तु असाइन नहीं करता है?
मेरे पास एक साधारण डेटासेट है जिसे वर्तमान में JSON फ़ाइल से लोड किया जा रहा है। मेरा कोणीय नियंत्रक ऐसा करता है, साथ ही कुछ कार्यों को परिभाषित करता है:
App.controller('AppCtrl', function AppCtrl($scope, JsonService) {
// load the initial data model
if (!$scope.data) {
JsonService.getData(function(data) {
$scope.data = data;
$scope.records = data.children.length;
});
} else {
console.log("I have data already... " + $scope.data);
}
// adds a resource to the 'data' object
$scope.add = function() {
$scope.data.children.push({ "name": "!Insert This!" });
};
// removes the resource from the 'data' object
$scope.remove = function(resource) {
console.log("I'm going to remove this!");
console.log(resource);
};
$scope.highlight = function() {
};
});
मेरे पास फ़ंक्शन <button>
ठीक से कहा जाता है $scope.add
, और $scope.data
सेट में नई ऑब्जेक्ट ठीक से डाली गई है । मेरे द्वारा सेट की गई तालिका में "ऐड" बटन को हिट करने पर हर बार अपडेट होता है।
<table class="table table-striped table-condensed">
<tbody>
<tr ng-repeat="child in data.children | filter:search | orderBy:'name'">
<td><input type="checkbox"></td>
<td>{{child.name}}</td>
<td><button class="btn btn-small" ng-click="remove(child)" ng-mouseover="highlight()"><i class="icon-remove-sign"></i> remove</button></td>
</tr>
</tbody>
</table>
हालाँकि, यह देखने के लिए मैंने जो निर्देश सेट किया $scope.data
है, यह सब होने पर निकाल नहीं दिया जा रहा है।
मैं HTML में अपना टैग परिभाषित करता हूं:
<d3-visualization val="data"></d3-visualization>
जो निम्नलिखित निर्देश के साथ जुड़ा हुआ है (प्रश्न विवेक के लिए छंटनी):
App.directive('d3Visualization', function() {
return {
restrict: 'E',
scope: {
val: '='
},
link: function(scope, element, attrs) {
scope.$watch('val', function(newValue, oldValue) {
if (newValue)
console.log("I see a data change!");
});
}
}
});
मुझे "I see a data change!"
शुरुआत में ही संदेश मिल जाता है , लेकिन उसके बाद भी मैंने "ऐड" बटन नहीं मारा।
$watch
जब मैं ऑब्जेक्ट से ऑब्जेक्ट्स को जोड़ / हटा रहा / रही हूं data
, तो ऑब्जेक्ट को असाइन करने के लिए एक नया डेटासेट नहीं मिलने से मैं घटना को कैसे ट्रिगर कर सकता हूं data
?
if
बयान को बंद कर दूंगा ।