0

这是现在工作。以下是此代码的修改版本。var data = $.getJSON("URL", null, function (result) {

                        var notes = function () {
                            self = this;
                            self.notes = ko.observableArray(result);
                            self.deleteNote = function (note) {
                                $.ajax({
                                    url: "URL" + this.ID,
                                    dataType: "json",
                                    type: "GET",
                                    success: function (d) {
                                        self.notes.remove(note);
                                    }
                                });
                            };

                            self.addNote = function () {
                                var note = $("#txtNote").val();
                                $.ajax({
                                    url: "URL",
                                    type: "POST",
                                    data: { 'note': note },
                                    datatype: "json",
                                    success: function (data) {
                                        self.notes.push({ Description: note, ID: data.ResponseData.id, CreateDate: data.ResponseData.createDate });
                                    }
                                });
                            }


                        }
                        ko.applyBindings(new notes());
                    });

谢谢, JSHunjan

4

1 回答 1

2

这条线可能是问题

viewModel.notes.remove(this);

this指向当前函数,所以 remove 函数不知道要删除什么。

如果您使用click绑定,我假设您这样做,实际的注释将被传递给函数,这应该是您的解决方案(未经测试)。我添加了note变量

   removePerson: function (note) {
        $.ajax({
            url: "URL",
            type: "POST",
            success: function () {
                viewModel.notes.remove(note);
            }
        })
    }

在此处阅读文档:http: //knockoutjs.com/documentation/click-binding.html

于 2013-08-02T10:15:37.007 回答