Knockout viewmodel函数无法访问

时间:2013-08-02 10:10:12

标签: knockout.js

现在正在工作。以下是此代码的修改版本。 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

1 个答案:

答案 0 :(得分: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