वहाँ चार्ट पुस्तकालय जड़ गुंजाइश पर मौजूदा ऑब्जेक्ट को संशोधित करने, और इस तरह यह हमेशा के लिए बाद में अनदेखी के साथ कोई समस्या प्रतीत होता है में मदद करता है। मैं वास्तव में नीचे ट्रेस कर सकते हैं नहीं यह क्या कर रहा है, लेकिन यहाँ आप के लिए एक ठीक है: http://plnkr.co/edit/jDQFV62FSeXAQJ6o7jE8
यहाँ तुम क्या
scope.$watch('config', function(newVal) {
if(angular.isDefined(newVal)) {
if(charts) {
charts.destroy();
}
var ctx = element[0].getContext("2d");
charts = new Chart(ctx, scope.config);
//scope.$emit('create', charts);
}
});
से ऊपर था, जैसा कि आप देख सकते हैं कि आप में सीधे scope.config
गुजर रहे हैं चार्ट विधि। ऐसा लगता है कि किसी भी तरह से डेटा को संशोधित किया जा रहा है, और चूंकि यह संदर्भ द्वारा पारित किया गया है, इसलिए आप वास्तव में $rootScope.sales.charts
संशोधित कर रहे हैं। यदि आप उस ऑब्जेक्ट की प्रतिलिपि बनाते हैं और इसे नीचे स्थानीय रूप से उपयोग करते हैं, तो आपको वह समस्या नहीं है।
यहां बताया गया है कि मैंने इसे कैसे ठीक किया।
scope.$watch('config', function(newVal) {
var config = angular.copy(scope.config);
if(angular.isDefined(newVal)) {
if(charts) {
charts.destroy();
}
var ctx = element[0].getContext("2d");
charts = new Chart(ctx, config);
//scope.$emit('create', charts);
}
});
आप देख सकते हैं कि पासिंग कि सीधे में, हम एक प्रति (angular.copy()
) बनाने के लिए कोणीय का उपयोग वस्तु के बजाय, और उस वस्तु हम में भेज देते हैं।
स्रोत
2015-11-23 18:14:20
आप कहाँ में उत्सर्जित बनाने घटना संभाल रहे हैं घड़ी? –
क्षमा करें, ईवेंट का उपयोग नहीं किया गया है, मैं इसे हल करने के लिए परीक्षण और त्रुटि कर रहा था लेकिन असफल रहा। मैं इसे प्लंकर –