2014-06-10 8 views
10

के साथ केंडो ग्रिड कॉलम टेम्पलेट में फ़ंक्शन का उपयोग कैसे करें मेरे पास एक केंडो ग्रिड में एक कॉलम है जो मैं प्रतिपादन के लिए कुछ विशिष्ट तर्क करना चाहता हूं, और कोणीय का उपयोग कर रहा हूं। मेरे पास के-कॉलम निर्देश का उपयोग करके ग्रिड कॉलम सेट अप हैं।AngularJS

the documentation को देखने के बाद, यह आसान लग रहा था: मैं अपने स्तंभ के लिए टेम्पलेट विकल्प जोड़ सकते समारोह को परिभाषित मेरी तर्क करते हैं, और में DataItem मूल्य पारित करने के लिए क्या मैं इस तरह दिखता है:।

k-columns='[{ field: "Name", title: "Name", 
    template: function (dataItem){ 
     // Perform logic on value with dataItem.Name 
     // Return a string 
    } 
}]' 

हालांकि, इसे चलाने से वाक्यविन्यास त्रुटि '{' के बारे में शिकायत करती है जो मेरे फ़ंक्शन में ब्लॉक खोलने का कारण बनती है।

मैंने इस प्रारूप में टेम्पलेट फ़ंक्शन को परिभाषित करने के कई उदाहरण देखे हैं। क्या काम करने के लिए कुछ और करने की ज़रूरत है? क्या मैं कुछ गलत कर रहा हूँ? टेम्पलेट को फ़ंक्शन के रूप में परिभाषित करने और कॉलम डेटा को पास करने का कोई और तरीका है? (मैंने अपने $ स्कोप पर एक फ़ंक्शन बनाने का प्रयास किया, जो काम करता था, सिवाय इसके कि मैं यह समझ नहीं पाया कि फ़ंक्शन में डेटा कैसे प्राप्त किया जाए।)

आपकी सहायता के लिए धन्यवाद।

उत्तर

12

ऐसा प्रतीत होता है कि AngularJS और Kendo का उपयोग करते समय इस फैशन में कॉलम टेम्पलेट को परिभाषित नहीं किया जाता है। यह दृष्टिकोण उन परियोजनाओं के लिए काम करता है जो कोणीय (मानक एमवीवीएम) का उपयोग नहीं करते हैं, लेकिन इसके समावेशन में विफल रहता है।

वैकल्पिक हल है कि खोज की मेरा एक सहयोगी $ गुंजाइश पर एक templating समारोह, एक अवधि के सभी के अंदर निर्दिष्ट करने के लिए एनजी-बाँध का उपयोग कर टेम्पलेट का निर्माण करना है:

template: "<span ng-bind=templateFunction(dataItem.Name)>#: data.Name# </span>" 

यह डिफ़ॉल्ट स्तंभ templating है टेलरिक द्वारा उनके केंडो-कोणीय स्रोत कोड में लागू किया गया दृष्टिकोण। मुझे अभी तक पता नहीं है कि डेटा। नाम मूल्य आवश्यक है या नहीं, लेकिन यह हमारे लिए काम करता है।

+5

एक आसान वर्कअराउंड उपलब्ध है - बस दायरे तक पहुंचें और 'dataItem' 'टेम्पलेट:" {{dataItem.Name}} ",' – jajdoo

5

चेतावनी: इस समय कोड का परीक्षण करने के केंडो के लिए पहुँच नहीं है, लेकिन यह बहुत करीब

आपके मामले में, आप k-स्तंभ के मूल्य के आ स्ट्रिंग बताए जाते हैं होना चाहिए और कि स्ट्रिंग शब्द function और अपने घुंघराले ब्रेस {

आप समारोह निष्पादित हो जाता है सुनिश्चित करने की आवश्यकता शामिल हैं ... कुछ इस तरह:

k-columns=[ 
    { 
     field: "Name", 
     title: "Name", 
     template: (function (dataItem){ 
     // Perform logic on value with dataItem.Name 
     // Return a string 
     }()) 
    } 
]; 

अंतर ध्यान दें:

हम एक वस्तु बनाते हैं - वास्तविक ईमानदार-से-भलाई वस्तु, और हम template संपत्ति को पॉप्युलेट करने के लिए IIFE का उपयोग करते हैं।

+0

आपके इनपुट के लिए धन्यवाद उम्मीद है। यह एक बहुत अच्छा विचार है, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है: मुझे पहले की तरह ही त्रुटि मिलती है। कुछ चीजें जो मुझे नोटिस करती हैं: ए) फ़ंक्शन कॉल कोष्ठक समापन कार्य परिभाषा कोष्ठक के बाद होना चाहिए, और बी) मुझे यकीन नहीं है कि यह प्रारूप क्यों आवश्यक होगा, क्योंकि टेलीरिक के दस्तावेज़ इसका उपयोग नहीं करते हैं। वे टेम्पलेट को फ़ंक्शन के रूप में स्वयं परिभाषित करते हैं। – MWinstead

+0

हालांकि यह थोड़ा बेहतर हो गया है, मुझे टेलरिक के दस्तावेज़ों को अक्सर ... कम करना पड़ता है। (और आक्रमणकारी माता-पिता का स्थान कोई फर्क नहीं पड़ता, यह सिर्फ एक वरीयता है। '(फ़ंक्शन() {}()) '' (फ़ंक्शन() {})() ' –

+6

जैसा ही है' किसी फ़ंक्शन को बिना किसी तर्क के (एक डेटाइटम) की उम्मीद कर रहा है। यदि आप टेम्पलेट को फ़ंक्शन के रूप में निर्दिष्ट करते हैं (फ़ंक्शन परिभाषा के बाद() के बिना), केंडो इस आइटम को डेटा स्रोत में प्रत्येक आइटम के लिए कॉल करेगा, वर्तमान आइटम प्रदान करेगा तर्क के रूप में। – cipak

3

हो सकता है, यह किसी के लिए उपयोगी हो जाएगा - इस कोड को भी मेरे लिए काम करता है:

columns: [ 
       { field: "processed", title:"Processed", width: "100px", 
        template: '<input type="checkbox" ng-model="dataItem.processed" />' }, 

और आप दो तरह से कुछ इस तरह से बाध्यकारी मिलती है:

<div class="col-md-2"> 
      <label class="checkbox-inline"> 
       <input type="checkbox" ng-model="vm.selectedInvoice.processed"> 
       processed 
      </label> 
     </div> 
0

के घंटे के बाद खोज कर। यहां निष्कर्ष निकाला गया है कि काम किया गया: अपने ग्रिड डेटा को {{dataItem.masterNoteId}} और आपके $ स्कोप डेटा को केवल संपत्ति का नाम या फ़ंक्शन के रूप में एक्सेस करें।

उदाहरण

  template: '<a href="\\#/ops/order/{{orderId}}/note/{{dataItem.masterNoteId}}"><i class="fa fa-edit"></i></a>', 

मैं वास्तव में इस तिजोरियां किसी जीवन :)