0

我有一个页面,我将视图模型绑定到 jQuery UI 对话框中的 HTML 表。

当用户关闭对话框时,我想删除视图模型中observableArray绑定到 HTML 表的所有元素。我正在使用该removeAll()方法,但我的萤火虫告诉我这不是一个函数。

你能帮助我吗?

这是一个简化的场景。

HTML

<input type="button" id="open" value="GO!"><br />
<div id='hidden'>
    <table>
        <tbody data-bind="foreach: i">
            <tr>
                <td><span data-bind="text: code" /></td>
                <td><span data-bind="text: descr" /></td>
            </tr>
        </tbody>
    </table>
</div>

JS

$(function () {

    function vm() {
        this.items = [
            {code: "2011",descr: "descr 2011"},
            {code: "2012",descr: "descr 2012"}, 
            {code: "2013",descr: "descr 2013"}
        ];

        this.i = ko.observableArray(this.items);

        this.clearFoundEvals = function()
        {
            this.i.removeAll();
        };

        return this;
    }

    ko.applyBindings(new vm());

    $dialog = $('#hidden').dialog({
        autoOpen: false,
        height: 200,
        width: 300,
        buttons: {
            cancel: function () {
                vm.clearFoundEvals();
                $(this).dialog('close');
            }
           }
        });

        $('#open').click(function(){
            $dialog.dialog('open');
        });    
    });    

工作示例

4

1 回答 1

2

您尚未将视图模型分配给变量,因此它在取消方法中不存在:

var vm = new vm();
ko.applyBindings(vm);

jsFiddle

于 2013-02-22T11:15:18.233 回答