Как связать диалоговые кнопки jQuery с нокаутом ViewModel

StackOverflow https://stackoverflow.com/questions/7801458

  •  22-10-2019
  •  | 
  •  

Вопрос

Что я хотел бы сделать, так это провести диалог, в котором кнопки находятся в базе базы данных о нокаутировании ViewModel, чтобы я мог включить или отключить эти кнопки в зависимости от различных условий в форме

Но то, как вы делаете кнопки в диалогах jQuery, немного отличается от нормы.

У кого -нибудь есть решение для этого?

Это было полезно?

Решение

  1. Обязательно примените свой собственный class на кнопки диалога:

    $("#dialog").dialog({
        buttons: [{
            text: 'Ok',
            class: 'ok-button'
        }]
    });
    
  2. Захватить button.ok-button и применить data-bind атрибут к этому (visible Здесь, просто чтобы показать вам, что это работает). Здесь, name это наблюдаемое свойство нашей модели взгляда:

    $("button.ok-button").attr("data-bind", "visible: name().length");
    
  3. Применяйте привязки нормально:

    var model = { name: ko.observable('') };
    ko.applyBindings(model);
    

Вот пример, который скрывает кнопку «ОК» в диалоге, если name (наблюдаемый) имеет длину > 0: http://jsfiddle.net/9crfy/

Другие советы

Чтобы добавить ответ Эндрю, поскольку атрибут связывания данных-это просто еще один атрибут, который вы можете добавить к своим кнопкам, это также будет работать:

$("#dialog").dialog({
    buttons: [{
        text: 'Ok',
        'data-bind': 'visible: name().length'
    }]
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top