2012-06-29 9 views
5

बटन को रिबन टूल बार में लागू करने के हिस्से के रूप में। मुझे बटन जावा स्क्रिप्ट फ़ाइल में स्कीमा नाम की आवश्यकता है। इसलिए मैं स्कीमा ऑब्जेक्ट प्राप्त करने के लिए निम्न आदेश का उपयोग करने का प्रयास कर रहा हूं।ट्रिडियन में स्कीमा ऑब्जेक्ट से स्कीमा नाम कैसे प्राप्त करें?

$display.getView().getItem().getSchema(); 

उपरोक्त आदेश स्कीमा ऑब्जेक्ट वापस करेगा। लेकिन स्कीमा ऑब्जेक्ट से स्कीमा शीर्षक कैसे प्राप्त करें। कृपया इसमें मेरी मदद करें। अग्रिम में धन्यवाद। प्रारंभिक प्रतिक्रिया की सराहना की जाती है।

उत्तर

-5

निम्न आदेश का उपयोग करते हुए एक स्कीमा नाम का उपयोग कर सकते हैं:

आप आइटम लोड करने के लिए है और यह गुण (सरलीकृत कोड) यह पढ़ने के लिए निम्नलिखित कोड का उपयोग कर सकते हैं।

$display.getView().getItem().getSchema().getStaticTitle(); 

आपकी मदद के लिए धन्यवाद Romkes।

अरे पफलिन मैं यह नहीं कह रहा कि यह एकमात्र समाधान है। लेकिन यह आदेश बिना किसी देरी के काम कर रहा है। क्षमा करें अगर मैं किसी की भावनाओं को चोट पहुंचाता हूं।

+1

यह अभी भी तभी काम करेगा यदि आइटम पहले से ही सूची में लोड हो चुका है। जो स्पष्ट रूप से यह आपके परीक्षण में था, लेकिन आपके उपयोगकर्ताओं को ऐसी स्थिति मिल सकती है जहां आइटम अभी तक लोड नहीं हुआ है। अपने और अपने उपयोगकर्ताओं को एक एहसान दें और इस विधि से चिपके रहें कि अल्बर्ट ने सुझाव दिया: आपका कोड वेब यूआई में चलता है और जानकारी को दूरस्थ सर्वर से प्राप्त करने की आवश्यकता हो सकती है। –

10

आपको स्कीमा ऑब्जेक्ट पर .load (true) को कॉल करके आइटम जानकारी लोड करने की आवश्यकता है। क्योंकि (स्पष्ट) प्रदर्शन कारणों से सभी जानकारी लोड नहीं होती है।

चूंकि .load() कॉल असीमित है, इसलिए लोडिंग होने पर आपको कॉलबैक फ़ंक्शन को 'पता' करने के लिए उपयोग करना होगा।

var schemaObject = $display.getView().getItem().getSchema(); 
function loaded() 
{ 
    alert(schemaObject.getTitle()); 
} 
$evt.addEventHandler(schemaObject, "load", loaded); 
schemaObject.load(true); 
+0

आपकी प्रतिक्रिया के लिए धन्यवाद। यह लोड हो रहा है अगर लोड() विधि में चेतावनी डालें। यदि नहीं, तो यह वापस लौट रहा है। ऐसा लगता है कि इसे लोड करने के लिए कुछ समय चाहिए। इससे कैसे बचें? क्या आप कृपया मुझे समाधान समझा सकते हैं? अग्रिम में धन्यवाद। –

+1

आप उस "से बचें" नहीं करते हैं। यह एक असीमित प्रक्रिया है। इसके बजाए आपको अपने कोड को चलाने के लिए ट्रिगर करने के लिए ईवेंट (उदाहरण के लिए $ evt.addEventHandler देखें) का उपयोग करना चाहिए। –

+2

मैं जांचता हूं कि getStaticTitle पहले कुछ भी लौटाता है, हालांकि - शीर्षक उन गुणों में से एक है जो वास्तव में लोड हो सकते हैं, भले ही शेष आइटम नहीं है (क्योंकि अन्य वस्तुओं के लिंक आमतौर पर आईडी और लक्ष्य का शीर्षक होते हैं) –