2014-05-24 5 views
5

MVVM उदाहरण here पर एक नज़र डालें:अद्यतन केंडो NumericTextBox

मैं स्पिन घटना पर अद्यतन करने के लिए MVVM मूल्य (क्लिक करने ऊपर या नीचे तीर)

कैसे प्राप्त कर सकते हैं यहाँ मैं क्या करने की कोशिश की है:

स्पिन घटना में, मैं

$("#ntb").getKendoNumericTextBox().trigger("change"); 

यही काम किया लेकिन अजीब था करने की कोशिश की दुष्प्रभाव।

यदि डोम पर पर्याप्त तत्व हैं, तो स्पिन घटना फायरिंग रखेगी।

$("#ntb").getKendoNumericTextBox().trigger("change"); 

:

इस पुन: पेश करने का एक और तरीका, से here (jsbin)

कोड ले एक HTML फ़ाइल में यह डालें क्रोम या एफएफ में लोड और फिर इस लाइन पर एक को तोड़ने बिंदु डालने के लिए है जारी रखें और आप ब्रेकपॉइंट को समय के बाद हिट टाइम देखेंगे।

फ़ायरफ़ॉक्स में, यदि मेरा डोम काफी बड़ा है, तो मुझे ब्रेकपॉइंट के बिना एक रेपो मिल जाता है।

उत्तर

3

मैंने आपके jsbin की जांच की और मैंने HTML और जावास्क्रिप्ट में कुछ त्रुटियां देखीं। मुझे लगता है कि जब आप विभिन्न कोडों का परीक्षण कर रहे थे तो आप इसे सही करना भूल गए थे। वैसे भी मैं आपके कोड को साफ़ और सही करता हूं और उन्हें jsfiddle पर डाल देता हूं।

ब्रेकपाइंट (debugger;) डालने के बाद मैंने देखा कि तुम ठीक कह रहे onSpin घटना असीम से चलाता है, लेकिन यह अजीब कार्य होता है अगर आप ईवेंट में एक ब्रेकपाइंट डाल दिया। यदि आप ब्रेकपॉइंट हटाते हैं और console.log(" पर स्पिन event triggered."); डालते हैं तो आप देखते हैं कि सब ठीक है और ईवेंट सिर्फ एक बार ट्रिगर हुआ।

मुझे विभिन्न परिदृश्यों में ऐसे मुद्दों के साथ सामना करना पड़ा उदाहरण के लिए alert()console.log() के बजाय डीबगिंग उद्देश्य के लिए।


कोड:

var viewModel = kendo.observable({ 
    selectedNumber: 0, 
    isEnabled: true, 
    isVisible: true, 
    onSpin: function() { 
     //debugger; 
     console.log("`onSpin` event triggered."); 
     $("#ntb").getKendoNumericTextBox().trigger("change"); 
    }, 
    onChange: function() {} 
}); 
kendo.bind($("#example"), viewModel); 
+0

सफाई और मेरी रेप्रो की पुष्टि के लिए धन्यवाद के तहत परिवर्तन घटना अच्छा फोन करेगा, पता करने के लिए मैं पागल नहीं।समस्या फ़ायरफ़ॉक्स में है, यह ब्रेकपॉइंट के बिना repros .. क्रोम और आईई ठीक है। – Matt

+0

@ मैट मैं सिर्फ आईई 10 और एफएफ 2 9 में परीक्षण करता हूं उनमें से कोई भी ब्रेकपॉइंट के बिना इस मुद्दे को दोहराता है! एफएफ कंसोल खोलें और स्पिन पर jsfiddle क्लिक पर जाएं प्रत्येक क्लिक के लिए एक बार 'ऑनस्पिन' ट्रिगर करता है। –

+0

क्षमा करें, अगर डीओएम बड़ा है तो यह एफएफ में repros है, मुझे – Matt

1

केंडो समर्थन स्पिन घटना में इस चलाने के लिए कहते हैं:

this.set('selectedNumber', e.sender.element.val()); 

और उस समस्या का समाधान करता है।

+0

+1, आपकी समस्या हल हो गई है। –

0

आप नीचे दिए गए कोड को आजमा सकते हैं। इससे मेरा काम बनता है।

ViewModel

viewModel.bind("change", function (e) { 
     console.log("property Changed on spin "); 
    }); 

उस्तरा कोड

<input id="tbSlideDuration" data-role="numerictextbox" 
          data-format="#" 
          data-min="1" 
          data-max="100" 
          data-bind="value:slideDuration, events: {spin:change}" /> 

इस हुड :)

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