To nokaut 2,1 wyrażenie wiążące działa dobrze pod Firefoksem i IE9, ale awarie w trybie zgodności IE9 z błędem "Oczekiwano identyfikatora, sznurka lub numer„:IE wersje wcześniejsze niż 9 podnosi błędzie „Oczekiwano identyfikatora, łańcuch lub liczba”
<div data-bind="template: {
if: myDataModel,
data: myDataModel,
afterRender: setup(myDataModel) }">
znalazłem rzeczywiste miejsce pod debuggerem, to ta linia kodu (knockout-2.1.0.debug.js):
return new Function("sc", functionBody)
functionBody
jest ciągiem równa wyrażeniu powyżej. Próbowałem odtwarzać spacje i znaki powrotu karetki - nic nie pomaga, te same wyniki: działa zgodnie z oczekiwaniami z każdą przeglądarką inną niż tryb zgodności IE9
Jakieś sugestie?
Jesteś całkowicie w porządku, teraz z ' 'if'' ekspresji działa dobrze. Dokumentacja Knockout.js o tym nie wspomina, wszystkie próbki dla wyrażenia "if" na swojej stronie internetowej http://knockoutjs.com podane bez cudzysłowów, chociaż deklarują prace ramowe z IE6 +, co wydaje się nieprawdą. – YMC
@YMC: Wewnętrznie , nokaut zapewnia, że wszystkie właściwości najwyższego poziomu w wiązaniach są cytowane. Nie może zrobić tego samego dla literałów z zagnieżdżonymi obiektami. Dlatego normalne nokautowanie "if" wydaje się działać bez żadnych problemów. Musisz po prostu przyzwyczaić się do cytowania nazw właściwości tych obiektów. –
@Jeff Mercado Widzę, ale moje narzekanie nie było spowodowane brakiem komunikatów o błędach, chodziło o brak cytowania instrukcji "if" ich własnych próbek na własnej stronie internetowej – YMC