Как связать диалоговые кнопки jQuery с нокаутом ViewModel
-
22-10-2019 - |
Вопрос
Что я хотел бы сделать, так это провести диалог, в котором кнопки находятся в базе базы данных о нокаутировании ViewModel, чтобы я мог включить или отключить эти кнопки в зависимости от различных условий в форме
Но то, как вы делаете кнопки в диалогах jQuery, немного отличается от нормы.
У кого -нибудь есть решение для этого?
Решение
Обязательно примените свой собственный
class
на кнопки диалога:$("#dialog").dialog({ buttons: [{ text: 'Ok', class: 'ok-button' }] });
Захватить
button.ok-button
и применитьdata-bind
атрибут к этому (visible
Здесь, просто чтобы показать вам, что это работает). Здесь,name
это наблюдаемое свойство нашей модели взгляда:$("button.ok-button").attr("data-bind", "visible: name().length");
Применяйте привязки нормально:
var model = { name: ko.observable('') }; ko.applyBindings(model);
Вот пример, который скрывает кнопку «ОК» в диалоге, если name
(наблюдаемый) имеет длину > 0
: http://jsfiddle.net/9crfy/
Другие советы
Чтобы добавить ответ Эндрю, поскольку атрибут связывания данных-это просто еще один атрибут, который вы можете добавить к своим кнопкам, это также будет работать:
$("#dialog").dialog({
buttons: [{
text: 'Ok',
'data-bind': 'visible: name().length'
}]
});