2012-09-25 5 views
14

के भीतर फ़ंक्शंस को कॉल करने के लिए कैसे करें मैं कुछ पाठों पर Ext's String विधि का उपयोग करना चाहता हूं जो दृश्य में आउटपुट होंगे।XTemplate (itemTpl)

उदाहरण के लिए:

itemTpl: [ 
    ... 
    '<tpl switch="post_type">', 
    '<tpl case="new_user">', 
     '<p>{post_text_teaser}</p>', 
     '<p>{timestamp}</p>', 
    '<tpl default>', 
     '<p>' + Ext.String.ellipsis(+ '{post_text_teaser}' + \, 4) + '</p>', 
    ... 
].join(''), 

लेकिन निश्चित रूप से लाइन 10 में संयोजन गैर कानूनी है।

क्या आप जानते हैं कि यह संभव है या यह सही तरीके से कैसे करें?

+0

@johan और @sra ओपी में संपादन को नोट करें - 'itemTpl' के अंत में '.join (' ')' है - क्या यह एक कार्य सहित एक समस्या होगी? – pepe

+0

जब तक आप टेम्पलेट को XTemplate के रूप में चलाते हैं, तो यह कोई समस्या नहीं होनी चाहिए – sra

उत्तर

18

अंदर एक समारोह का उपयोग कर सकते यह आपकी समस्या का समाधान करना चाहिए:

'<tpl switch="post_type">', 
     '<tpl case="new_user">', 
      '<p>{post_text_teaser}</p>', 
      '<p>{timestamp}</p>', 
     '<tpl default>', 
      '<p>{[Ext.String.ellipsis(values.post_text_teaser,4,false)]}</p>', 
    '</tpl>' 

आप पा सकते हैं और अधिक XTemplate के बारे में जानकारीपर

टेम्पलेट सदस्य फ़ंक्शन के साथ यह बात यह है कि जहां तक ​​मुझे पता है कि आप उन्हें नियमित रूप से आइटम में सीधे परिभाषित नहीं कर सकते हैं, लेकिन स्पष्ट रूप से एक नया XTemplate परिभाषित करने की आवश्यकता है और फिर अपने आइटम में इसका उपयोग करें। उदाहरण देखें:

var tpl = new XTemplate(
    '<tpl switch="post_type">', 
     '<tpl case="new_user">', 
      '<p>{post_text_teaser}</p>', 
      '<p>{timestamp}</p>', 
     '<tpl default>', 
      '<p>{[this.shorten(values.post_text_teaser)]}</p>', 
    '</tpl>', 
    {   
     shorten: function(name){ 
      return Ext.String.ellipsis(name,4,false); 
     } 
    } 
); 

... 

itemTpl: tpl, 

... 

Senchafiddle example

इस के रूप में नीचे दिए गए कोड होगा ठीक काम करना चाहिए (बस ऊपर XTemplate से कोड डालने)।

itemTpl: new XTemplate(...), 

Senchafiddle example

आशा इस इसे बाहर sortens कि!

संपादित देखा है कि मैं याद किया समापन टैग हेड, कभी कभी यह उनके बिना काम करता है, लेकिन यह हमेशा उन्हें इस्तेमाल करने के रूप में वे सकता है दिलचस्प त्रुटियों (इस मामले में एक उत्पन्न कोड को लापता हो ब्रैकेट) का कारण अच्छी आदत है।

+0

निरपेक्ष +1 यह समझा सकता है कि यह क्यों काम नहीं करेगा सदस्य विधियों के साथ? – sra

+0

उत्तर के कार्यों के बारे में जानकारी – zelexir

+0

Yep जो आपके सुझावों के लिए एक आकर्षण - thx zelexir और @sra की तरह काम करती है – pepe

1

Note: The example below does not work as expected! Look at zelexir answer for clarification!

आप memberfunctions

itemTpl: [ 
    ... 
    '<tpl switch="post_type">', 
    '<tpl case="new_user">', 
     '<p>{post_text_teaser}</p>', 
     '<p>{timestamp}</p>', 
    '<tpl default>', 
     '<p>{[this.doAction(post_text_teaser)]}</p>', 
    ..., 
    { 
     // XTemplate configuration: 
     disableFormats: true, 
     // member functions: 
     doAction: function(name){ 
      return Ext.String.ellipsis(name + "\", 4); 
     } 
    } 
] 
+0

@Johan - '' के साथ एक ही चीज़ है, एक त्रुटि – pepe

+0

@torr है, इसे ठीक से लपेटने की ज़रूरत है, 'मुझे लगता है लेकिन वैसे भी, ऐसा लगता है अपेक्षाकृत काम नहीं करने के लिए, कम से कम मेरे सैंडबॉक्स में ... मैं इसे – sra

+0

का परीक्षण करना जारी रखूंगा 'जॉइन' '' 'के उपयोग को गड़बड़ कर देगा, इसलिए इसे फ़ंक्शन तर्कों के अंदर' '' होने की आवश्यकता है ... ताकि त्रुटि को हटा दिया जा सके लेकिन मैं अभी भी इसे काम करने के लिए नहीं मिल सकता ... – pepe

0

उपयोग कर सकते हैं आप एक टेम्पलेट

itemTpl: [ 
    ... 
    '<tpl switch="post_type">', 
    '<tpl case="new_user">', 
     '<p>{post_text_teaser}</p>', 
     '<p>{timestamp}</p>', 
    '<tpl default>', 
     '<p>{[this.concatenate(values.post_text_teaser)]}</p>', 
    ..., 
    { 
     concatenate: function(teaser) { 
       return Ext.String.ellipsis(+ teaser + \, 4); 
     } 
    } 
] 
+0

से ऊपर आपके कोड का यह समाधान मुझे 'अनकॉट सिंटेक्स त्रुटि: अप्रत्याशित टोकन' कंसोल पर देता है :(- ',' वह है जिसे हम बचने की कोशिश कर रहे हैं – pepe

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