2014-12-08 3 views
1

Демо: http://jsfiddle.net/bL7qatx1/Нокаут динамические шаблоны не загружаются в IE9

В IE10 + \ Chrome \ FF, выше скрипку работает отлично. Однако в IE9 динамически добавленный шаблон не загружается в div (скрипт загружается в DOM).

var contentsElem = $('#contents'); 

var dynamicTemplateContents = '<div>This is the dynamic template...</div>'; 
var scriptElem = $('<script id="dynamic-template" type="text/html">'); 
scriptElem.html(dynamicTemplateContents); 
$('body').append(scriptElem); 

var vm = { 
    template1: 'static-template', 
    template2: 'dynamic-template', 
}; 

ko.applyBindings(vm); 

Я нашел https://github.com/knockout/knockout/issues/777, что означает, что он должен работать. Однако, похоже, в моем коде есть что-то другое.

Элемент script добавлен в DOM, но не связан с div в KO. Это почему-то не поддерживается в IE9? Есть ли способ заставить это работать?

ответ

0

Я просто понял, что было по-другому с моим кодом ...

Работа демо: http://jsfiddle.net/bL7qatx1/1/

Aparently ...

var scriptElem = $('<script id="dynamic-template" type="text/html">'); 
scriptElem.html(dynamicTemplateContents); 
$('body').append(scriptElem); 

... это не то же самое .. .

$('body').append('<script type="text/html" id="dynamic-template">'+dynamicTemplateContents+'</' + 'script>'); 

... на IE9. Не знаю, почему. (Если кто-нибудь знает, мне было бы интересно услышать объяснение)

+1

Похоже, это причуда DOM в IE9. Если вы начнете проверять элементы, исходная версия, похоже, встроила весь элемент div и т. Д. В тег скрипта, с отступом/новыми символами и т. Д., Как вы ожидали. Второй - это встроенный скрипт, который открывает и закрывает теги на одной строке. Исходя из этого, я попытался использовать '.text', а не' .html' - это похоже на работу: http://jsfiddle.net/6ubm17ta/1/ –

Смежные вопросы