2015-11-04 8 views
7

मैं web_tree_image विजेट संशोधित करने के लिए कोशिश कर रहा हूँ के उपवर्ग में बनाए गए DOM एलीमेंट का कॉलबैक जोड़ें। कॉलम में केवल एक छोटी छवि दिखाने के बजाय, मैं होवरिंग या क्लिक करते समय एक बड़ी छवि दिखाना चाहूंगा। इस लक्ष्य को हासिल करने के लिए, मैं के बाद विजेट start समारोह, के रूप में the documentation में विस्तार से बताया अधिभावी द्वारा, प्रदान की गई है एक कॉलबैक जोड़ने की कोशिश कर रहा हूँ।web.list.Column

इसलिए मैं web_tree_image.js के लिए निम्न कोड कहा:

openerp.web_tree_image = function (instance) { 
    instance.web.list.Image = instance.web.list.Column.extend({ 
     // [...] 
     start: function() { 
      console.log("start called"); 
      // [... add callbacks ...] 
     }, 
     // [...] 
    }); 
}; 

हालांकि, start समारोह कभी नहीं कहा जाता है, तो यह काम नहीं करता।

मैंने कोड पथ को पूरी तरह से समझ नहीं लिया है जो आम तौर पर start कहलाता है, लेकिन ऐसा लगता है कि यह web.list.Column के लिए किसी भी तरह से अलग है।

start बुलाया जाना चाहिए और मैंने कुछ गलत कर रहा हूँ? या डीओएम तत्वों के निर्माण के बाद कोड निष्पादित करने का दूसरा तरीका है?

+0

'विस्तार' – ChesuCR

+0

के बजाय 'शामिल' के साथ प्रयास करें यह 'शामिल' के साथ भी काम नहीं करता है; भी, [प्रलेखन] (https://www.odoo.com/documentation/8.0/reference/javascript.html#subclassing-widget) स्पष्ट रूप से बताता है कि इसे 'विस्तार' के साथ काम करना चाहिए। – ValarDohaeris

+0

मैं 'वर my_widget = नए MyWidget (यह) के साथ Odoo से परिचित नहीं हूँ, लेकिन दस्तावेज़ के अनुसार आप * उदाहरण बनाने के लिए *;' और * कुछ-div प्रस्तुत और 'my_widget.appendTo (साथ डोम * में डालने"। ");' – Anonymous0day

उत्तर

-1

जबकि मैं अभी भी नहीं जानता कि क्यों start समारोह नहीं बुलाया जाता है, यह एक समाधान नहीं है:

openerp.web_tree_image = function (instance) { 
    instance.web.list.Image = instance.web.list.Column.extend({ 
     // ... 
     format: function (row_data, options) { 
      // ... 
      window.setTimeout(function() { 
       console.log("DOM ready"); 
       // ... add callbacks ... 
      }, 0); 
      // ... 
     }, 
     // ... 
    }); 
}; 

समय-समाप्ति 0 के साथ घटना कतार में जोड़ कर, निष्पादन प्रासंगिक डोम तत्वों तक स्थगित कर किया जा सकता है here समझाया गया है के रूप में बनाया गया है।

-1

अनुसार प्रलेखन:

नया वर्ग तो निम्नलिखित तरीके से इस्तेमाल किया जा सकता:

// Create the instance 
var my_widget = new MyWidget(this); 
// Render and insert into DOM 
my_widget.appendTo(".some-div"); 

इन दो पंक्तियों के बाद मार डाला है (और कोई भी वादा appendTo द्वारा दिया () यदि आवश्यक हो तो हल हो गया है), विजेट इस्तेमाल करने के लिए तैयार है।


नोट

प्रविष्टि तरीकों विजेट खुद को शुरू होगा, और शुरू के परिणाम वापस आ जाएगी()।

किसी कारण से आप इन तरीकों कॉल करने के लिए नहीं करना चाहते हैं, तो आप> पहली कॉल() विजेट पर प्रस्तुत करना है, तो अपने डोम में डालें और इसे शुरू करना होगा।

+0

डाउनवोट क्यों? – Anonymous0day

+0

मामले मेरे सवाल में वर्णित में, विजेट एक पेड़ का मानना ​​है कि एक्सएमएल में परिभाषित किया गया है (और वास्तव में हुड के नीचे 'appendTo' समारोह कॉल करेंगे) के हिस्से के रूप instantiated है।ध्यान दें कि मुझे विजेट को तुरंत चालू करने और देखने में कोई समस्या नहीं है, समस्या वास्तव में बस 'स्टार्ट' नहीं कहा जाता है। – ValarDohaeris

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^