2012-12-15 13 views
6

केंद्र कैसे करें मैं RPNiemeyer की केंडो-नॉकआउट लाइब्रेरी का उपयोग कर रहा हूं।केंडो-नॉकआउट: विंडो

<div data-bind="kendoWindow: { isOpen: isOpen, title:'States', width: 600, height: 150, modal: true, resizable: false, actions: ['Maximize', 'Close'] }" > </div> 

मैं इस तरह संवाद केंद्र के लिए प्रयोग किया है:: मैं जो मैं html में इस तरह का प्रयोग कर एक केन्डो खिड़की है

$('#productionStates').data("kendoWindow").center(); 

लेकिन जैसे center एक विधि है मैं मार्कअप में यह पारित नहीं हो सकता इस center: true की तरह। केंडो-नॉकआउट दस्तावेज में कुछ विजेट्स के लिए एक प्रॉपर्टी विजेट है और मेरा अनुमान है कि यह कुंजी है लेकिन मुझे यकीन नहीं है कि इसका उपयोग कैसे किया जाए क्योंकि कोई उदाहरण नहीं है। किसी भी विचार का स्वागत किया जाएगा। धन्यवाद!

उत्तर

7

widget पैरामीटर का उपयोग तब किया जाना चाहिए जब आपको किसी विजेट के साथ बातचीत करने की आवश्यकता हो जो प्रदान किए गए बाध्यकारी विकल्पों द्वारा समर्थित न हो। आम तौर पर, यह एक आखिरी उपाय है, लेकिन इस मामले में ऐसा लगता है कि यह सही विकल्प होगा।

तुम क्या widget पैरामीटर में एक नमूदार पारित है और यह वास्तविक विजेट के साथ भरा हो जाएगा। फिर, आप अपने दृश्य मॉडल से इसे बंद कर सकते हैं।

कुछ की तरह:

var ViewModel = function() { 
    this.isOpen = ko.observable(false); 
    //center it if it is opened 
    this.isOpen.subscribe(function(newValue) { 
     if (newValue) { 
      this.myWidget().center();   
     } 
    }, this); 

    //hold the widget 
    this.myWidget = ko.observable(); 
}; 

फिर, मार्कअप में:

<div data-bind="kendoWindow: { isOpen: isOpen, visible: false, modal: true, widget: myWidget }"> 
    ... 
</div>​ 

यहाँ नमूना: http://jsfiddle.net/rniemeyer/gNgDm/

+0

धन्यवाद! क्या आप इस कार्यक्षमता को अपनी लाइब्रेरी में बुलियन संपत्ति के रूप में जोड़ने का इरादा रखते हैं? मेरे अनुभव में, हर बार मुझे एक मोडल विंडो की आवश्यकता होती है, इसे केंद्रित करने की आवश्यकता होती है। स्पष्ट रूप से ऐसा करने के लिए कॉल विधि को हमेशा तर्क क्यों लिखें? – Mdb

+0

यह थोड़ा चुनौतीपूर्ण है 'center' /' uncenter' और कोई घटनाओं की कोई अवधारणा खिड़की नहीं रह गया है केंद्रित है, तो पता करने के लिए है, क्योंकि (यह गलत पर सेट करने के लिए) या अब केंद्रित (सच करने के लिए यह निर्धारित करने के लिए)। यह वास्तव में ऐसा लगता है कि यह कॉन्फ़िगरेशन विकल्प होना चाहिए जो केंडो यूआई इसके लिए समर्थन करता है। मुझे इसके बारे में थोड़ा और सोचना होगा, लेकिन यह सामान्य "बाध्यकारी" पैटर्न में काफी फिट नहीं है। मैं निश्चित रूप से देख सकता हूं कि यह कैसे अधिक सुविधाजनक होगा। –

6

मैं वास्तव में नीमेयेर के रूप में एक ही प्रभाव बाध्यकारी हैंडलर में यह चिपके द्वारा प्राप्त किया:

 

    ko.bindingHandlers.kendoWindow.options = { 
     open: function() { this.element.data('kendoWindow').center(); } 
    }; 

कोई अतिरिक्त बाध्यकारी आवश्यक नहीं है, लेकिन यह आपके "ऑन ओपन" ईवेंट को जोड़ता है।