2012-10-26 13 views
6

यह नॉकआउट 2.1 बाध्यकारी अभिव्यक्ति फ़ायरफ़ॉक्स और IE9 के तहत ठीक काम करता है, लेकिन दुर्घटनाओं को जन्म देती है:आईई संस्करण 9 से पहले त्रुटि त्रुटि "<em>प्रत्याशित पहचानकर्ता, स्ट्रिंग या संख्या</em>" के साथ IE9 संगतता मोड में "प्रत्याशित पहचानकर्ता, स्ट्रिंग या संख्या"

<div data-bind="template: { 
    if: myDataModel, 
    data: myDataModel, 
    afterRender: setup(myDataModel) }"> 

मैं डिबगर के तहत वास्तविक जगह मिल, यह कोड की इस पंक्ति (नॉकआउट-2.1.0.debug.js) है:

return new Function("sc", functionBody) 

functionBody एक स्ट्रिंग ऊपर अभिव्यक्ति के बराबर है। मैंने रिक्त स्थान और कैरिज रिटर्न वर्णों के साथ खेलने की कोशिश की - कुछ भी मदद नहीं करता, एक ही परिणाम: यह IE9 संगतता मोड

कोई सुझाव नहीं है?

उत्तर

12

मुझे लगता है कि मुद्दा यह है कि आईई के पुराने संस्करणों को "अगर" या समान नामों को संपत्ति नाम के रूप में प्रदर्शित नहीं करना पसंद है। संपत्ति नामों के चारों ओर एकल उद्धरण डालने का प्रयास करें।

<div data-bind="template: { 
'if': myDataModel, 
data: myDataModel, 
afterRender: setup(myDataModel) }"> 

एक और आम समय है जब आप "कक्षा" बाध्यकारी होने पर ऐसा करेंगे। एक ही फिक्स: जे एस में आरक्षित शब्द का

<tr data-bind="attr: { 'class': packageSelected() ? 'success' : '' }"> 

सूची: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Reserved_Words

+0

आप पूरी तरह से सही हो, अब के साथ ' 'if'' अभिव्यक्ति में यह ठीक काम करता है। Knockout.js प्रलेखन का उल्लेख नहीं है, उनके वेब साइट http://knockoutjs.com पर उद्धरण के बिना दिए गए 'if' कथन के लिए सभी नमूने, हालांकि वे आईई 6 + से ढांचे के कामों की घोषणा करते हैं जो सच नहीं है – YMC

+1

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

+0

@ जेफ मर्काडो मैं देखता हूं, लेकिन मेरी शिकायत त्रुटि संदेशों की कमी से अधिक नहीं थी, यह अपने स्वयं के वेब साइट – YMC

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