knockoutjs 3.2.0无法在viewmodel中找到我的“click”绑定函数

时间:2015-01-30 13:02:32

标签: knockout.js

我的Top-Most ViewModel:

function Profile() {
    var self = this;
    this.id = ko.observable(0);
    this.name = ko.observable("");
    this.tasks = ko.observableArray([]);
    this.newTaskName = ko.observable('');
    this.newTaskDescription = ko.observable('');

    this.addNewTask = function() {
        if (self.newTaskName().trim() != '' && self.newTaskDescription().trim() != '') {
            var newTask = new TaskList();
            var newTaskId = 0;

            $.ajax({
                url: AddTaskUrl + "?userId=" + self.id() + "&taskName=" + self.newTaskName() + "&taskDesc=" + self.newTaskDescription(),
                type: "PUT",
                success: function(data) {
                    newTaskId = data;
                    newTask.taskId(newTaskId);
                    newTask.taskName(self.newTaskName());
                    newTask.taskDescription(self.newTaskDescription());
                    self.tasks.push(newTask);
                }
            });
        }
    };
}

此视图模型的实例已应用于ko.applyBindings()

这依赖于另一个viewModel来执行任务:TaskList viewModel。

function TaskList() {
    var self = this;
    self.taskId = ko.observable(0);
    self.taskName = ko.observable('');
    self.taskDescription = ko.observable('');
    self.removeTask = function() {
        myProfile.tasks.remove(self);
        $.ajax({
            url: RemoveTaskUrl + "?taskId=" + self.taskId(),
            type: "DELETE",
            success: function(data) {
                console.log(data);
            }
        });
    };
}

TaskList viewmodel使用foreach绑定绑定到UI,如下所示:

<ul data-bind="foreach: tasks">
    <li class="list-group-item">
        <div class="row">
            <div class="col-md-4">
                <span data-bind="text: taskName"></span>
                <br /> <ins data-bind="text: taskDescription"></ins>
            </div>
            <div class="col-md-2">
                <button class="btn btn-danger" data-bind="click: removeTask"><i class="glyphicon glyphicon-check">&nbsp;</i>Done</button>
            </div>
        </div>
    </li>
</ul>

但有些东西不能正常工作,因为Knockout在removeTask viewmodel中找不到TaskList函数在淘汰 foreach中运行结合。

错误消息是:

ReferenceError: removeTask is not defined

0 个答案:

没有答案