IE8

2012-04-13 12 views
13

साथ सशर्त नॉकआउट टेम्पलेट का उपयोग करना सभी में 'आधुनिक' ब्राउज़र निम्नलिखित काम करता है लेकिन IE8 में नहीं:IE8

<!-- ko template: {if: $root.itemToEdit.SomeObject() === $data, name: 'EditItemTemplate', afterRender: $root.initializeEditPanel } --> 
<!-- /ko --> 

मैं निम्न त्रुटि:

SCRIPT5022: Unable to parse bindings. Message: SyntaxError: Expected identifier, string or number; Bindings value: template: {if: $root.itemToEdit.SomeObject() === $data, name: 'EditItemTemplate', afterRender: $root.initializeEditPanel }

यह प्रतीत हो रहा है टेम्पलेट परिभाषा के अंदर if कथन शामिल करना। अगर मैं निम्नलिखित करने के लिए मार्कअप बदलने के लिए, IE8 खुश है:

<!-- ko if: $root.itemToEdit.SomeObject() === $data --> 
    <!-- ko template: {name: 'EditItemTemplate', afterRender: $root.initializeEditPanel } --> 
    <!-- /ko --> 
<!-- /ko --> 

क्यों IE8 में काम नहीं मेरे टेम्पलेट में एक if बयान सहित करता है?

उत्तर

33

पुराना आईई संस्करण संपत्ति नामों के लिए जावास्क्रिप्ट आरक्षित शब्दों का उपयोग करने के बारे में picky हो सकता है। यदि आप if'if' जैसे निर्दिष्ट करते हैं, तो आप ठीक होंगे। जैसा:

<!-- ko template: {'if': $root.itemToEdit.SomeObject() === $data, name: 'EditItemTemplate', afterRender: $root.initializeEditPanel } --> 
<!-- /ko --> 

या कुछ <label data-bind="attr : { 'for': id }"></label> हां तरह

+0

। यह तय है। धन्यवाद, रयान। –

+2

मैं इसे यहां क्यू एंड ए के रूप में पोस्ट कर सकता हूं, लेकिन अभी के लिए, केवल इसलिए कि मैंने इसे समझने की कोशिश में 5 घंटे बिताए हैं ... यदि आपको आईई 8 और केओ टेम्पलेट्स के साथ समस्याएं हैं, तो सुनिश्चित करें कि आपका वास्तविक टेम्पलेट किसी भी के अंदर नहीं है अगर ब्लॉक। मेरे पृष्ठ के विभिन्न हिस्सों में मेरे टेम्पलेट्स थे और केवल आईई 8 में समस्याएं थीं। उन्हें सभी को शरीर के शीर्ष पर ले जाया गया, अब महान काम कर रहा है। – eselk

+0

@eselk आपने अपनी टिप्पणी लिखकर मुझे कम से कम 5 घंटे बचाया। धन्यवाद! – Peter