0

ビューモデルをjQuery UIダイアログ内のHTMLテーブルにバインドするページがあります。

observableArrayユーザーがダイアログを閉じると、viewmodel 内のすべての要素をHTML テーブルにバインドして削除したいと考えています。メソッドを使用してremoveAll()いますが、firebug から、関数として認識されないと言われました。

手伝って頂けますか?

これは単純化されたシナリオです。

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

ビュー モデルを変数に割り当てていないため、cancel メソッドには存在しません。

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

jsフィドル

于 2013-02-22T11:15:18.233 に答える