2013-07-19 3 views
0

Я использую модель представления knockout.js на странице и все работает должным образом для замковых привязок, которые находятся в DIV, который я задал в JQuery диалоговогоНокаута Нажмите привязки в JQuery Диалоге

здесь являются исключением ДИВ

<div id="CancelModal" title="Cancel"> 
    Changes to the definition have been detected. Do you want to exit and discard the changes?" 
    <div style="position: absolute; bottom: 8px; right: 8px; text-align: right"> 
     <input type="button" value="Yes" data-bind="click: cancelConfirm" /> 
     <input type="button" value="No" data-bind="click: cancelDeny" /> 
    </div> 
</div> 

тогда мой JQuery

$("#CancelModal").dialog({ 
    modal: true, 
    autoOpen: false, 
    width: 400, 
    minHeight: 150, 
    maxHeight: 150, 
    position: "center", 
    resizable: false 
}); 

затем в ViewModel у меня есть

... 

cancelConfirm() { 
    alert("confirm"); 
} 

cancelDeny() { 
    alert("deny"); 
} 

привязки настроены, но опять же они не работают только для элементов в этом диалоговом окне. Если я удалю код диалогового окна jquery, он будет работать. любые идеи, что мне нужно сделать здесь?

ответ

1

Попробуйте http://jsfiddle.net/76EEt/1/

HTML

<a href="#" data-bind="click: $root.openDialog"> Open dialog </a> 
<div id="CancelModal" title="Cancel"> 
    Changes to the definition have been detected. Do you want to exit and discard the changes?" 
    <div style="position: absolute; bottom: 8px; right: 8px; text-align: right"> 
     <input type="button" value="Yes" data-bind="click: cancelConfirm" /> 
     <input type="button" value="No" data-bind="click: cancelDeny" /> 
    </div> 
</div> 

JS

$("#CancelModal").dialog({ 
    modal: true, 
    autoOpen: false, 
    width: 400, 
    minHeight: 150, 
    maxHeight: 150, 
    position: "center", 
    resizable: false 
}); 

var DataViewModel = function() { 
    var self = this; 

    self.cancelConfirm = function() { 
     alert("confirm"); 
    }; 

    self.cancelDeny = function() { 
     alert("deny"); 
    }; 

    self.openDialog = function() { 
     $("#CancelModal").dialog("open"); 
    }; 
}; 

ko.applyBindings(new DataViewModel()); 
0

вам нужно изменить его равным функции

self.cancelConfirm = function() { 
    alert("confirm"); 
} 

or 

this.cancelConfirm = function() { 
    alert("confirm"); 
} 
Смежные вопросы