मुझे एक वृक्ष संरचना मिली है। JSBIN hereयह फ़ंक्शन दो बार निष्पादित क्यों किया जाता है?
नियंत्रक$scope.add_task = function(to,name) {
DataFactory.add_task(to,name);
};
कारखाने सही स्थिति खोजने और नोड जोड़ने में निर्देश
scope.add_child_task = function() {
scope.add_task(scope.path,"child of " + scope.member.name);
if (!scope.has_children) {
scope.add_children_element();
scope.has_children = true;
}
};
में
।
मौजूदा बच्चों के साथ नोड्स में एक बच्चा जोड़ने के दौरान यह दो बच्चों को जोड़ रहा है और मुझे समझ में नहीं आता क्यों।
धन्यवाद।
संपादित मैं has_children
खो सकते हैं और यह अभी भी
link: function (scope, element, attrs) {
element.append("<collection></collection>");
$compile(element.contents())(scope);
scope.get_path = function() {
var temp = scope.$parent.get_path();
temp.push(scope.member.name);
return temp;
};
scope.path = scope.get_path();
scope.add_child_task = function() {
scope.add_task(scope.path,"child of " + scope.member.name);
};
}
संपादित 2 functin ही परिणाम
सदस्य लिंक का उत्पादन droped रूप में अच्छी तरह छोरों के लिए - सिर्फ संदर्भों का आदान-प्रदान, कुछ भी नहीं छोड़ा गया लेकिन एक कार्य ई है दो बार सताया!
इस उत्तर नहीं है, लेकिन में "add_children_element()" आप "scope.has_children = true;", और "add_task()" में भी कॉल कर रहे हैं। जांचें कि आपने डेटाफैक्टरी में इस गलती को दोहराया नहीं है, और लॉग इन करने का प्रयास करें (console.log) कोड वास्तव में क्या करता है। – Neozaru
मेरा मानना है कि आप पहले फंक्शन बॉडी के अंदर 'यह' चाहते हैं, न कि 'स्कोप' –
@ मार्क रीड - क्या आप समझा सकते हैं? इसके बजाय 'यह' क्या है? – haki