Questo ko 2.1 espressione vincolante funziona bene con Firefox e IE9, ma si blocca in modalità di compatibilità IE9 con l'errore "identificatore Previsto, stringa o un numero“:versioni di IE precedenti alla 9 genera l'errore "Previsto identificatore, stringa o un numero”
<div data-bind="template: {
if: myDataModel,
data: myDataModel,
afterRender: setup(myDataModel) }">
ho trovato luogo effettivo sotto debugger, è questa riga di codice (ko-2.1.0.debug.js):
return new Function("sc", functionBody)
functionBody
è una stringa uguale all'espressione sopra. Ho provato a giocare con spazi e caratteri di ritorno a capo - niente aiuta, stessi risultati: funziona come previsto con qualsiasi browser diverso dalla modalità di compatibilità IE9
Qualche suggerimento?
Sei tutto giusto, ora con ' 'if'' nell'espressione funziona benissimo. La documentazione di Knockout.js non la menziona, tutti gli esempi per l'istruzione 'if' sul loro sito web http://knockoutjs.com dati senza virgolette, sebbene dichiarino che il framework funziona da IE6 + che non sembra essere vero – YMC
@ YMC: Internamente , knockout assicura che vengano quotate tutte le proprietà di livello superiore nei binding. Non può fare lo stesso per i letterali degli oggetti nidificati. Ecco perché il normale knockout "se" sembra funzionare senza problemi. Dovrai solo prendere l'abitudine di citare i nomi delle proprietà per questi oggetti. –
@Jeff Mercado Vedo, ma il mio lamentarsi non era la mancanza di messaggi di errore, si trattava della mancanza di citazioni 'if' sui propri campioni sul proprio sito web – YMC