如何将Jquery对话框按钮绑定到knockout viewmodel

时间:2011-10-18 01:21:57

标签: jquery-ui knockout.js

我想做的是创建一个对话框,其中按钮被数据绑定到淘汰视图模型,因此我可以根据表单上的各种条件启用或禁用这些按钮

但是你在jquery对话框中创建按​​钮的方式与正常情况略有不同。

任何人都有解决方案吗?

2 个答案:

答案 0 :(得分:6)

  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);
    
  4. 这是一个示例,如果name(一个可观察的)的长度为> 0,则会在对话框中隐藏“确定”按钮:http://jsfiddle.net/9cRFy/

答案 1 :(得分:3)

要添加安德鲁的答案,因为数据绑定属性只是您可以添加到按钮的另一个属性,这也可以起作用:

$("#dialog").dialog({
    buttons: [{
        text: 'Ok',
        'data-bind': 'visible: name().length'
    }]
});