Knockout removeAll()无法识别

时间:2013-02-22 11:07:43

标签: javascript jquery-ui data-binding knockout.js

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

当用户关闭Dialog时,我想删除viewmodel 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');
        });    
    });    

Working example

1 个答案:

答案 0 :(得分:2)

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

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

jsFiddle