2013-06-12 3 views
0

http://jsfiddle.net/scottbeeson/SRUKN/24/всплывающее окно не имеет привязки, повторное очищает Целые ViewModel

Я использую это, чтобы создать новый DIV:

$("<div/>", { 
    class: "itemView", 
    id: name, 
    "data-bind": "template: { name: 'tmplItemView' }" 
}).appendTo("body") 

Шаблон имеет собственно данных связывающийся

<script type="text/html" id="tmplItemView"> 
    <div class="itemHeader" data-bind="text: name">Item Name</div> 
    <span id="itemClose" class="closeWindow"><i class="icon-remove">X</i></span> 
</script> 

Но когда я запускаю создание, он создает пустой div в DOM. Если я применил привязки сразу после этого, шаблон, похоже, работает правильно (т. Е. DIV не пуст), но он очищает всю модель.

Я имел дело с этим раньше, но теперь я считаю, что разница заключается в том, что я использую функцию jquery, чтобы поймать клик вместо того, чтобы использовать привязку привязки нокаута.

ответ

1

Я взглянул и нашел работу. См: http://jsfiddle.net/SRUKN/26/

function createItemDiv(item) { 
    console.log('Creating div from template'); 
    var $el = $("<div/>", { 
     class: "itemView", 
     id: item.name(), 
     "data-bind": "template: { name: 'tmplItemView' }" 
    }); 
    $el.appendTo("body"); 
    $el.draggable(); 
    ko.applyBindings(item, $el.get(0)); 
} 

В принципе, я просто хочу убедиться, что applyBindings вызова более целенаправленный, передавая как виртуальную машину, чтобы связываться с, а также целевым элементом.

+1

Работает как очарование, спасибо! –