Knockout.js knockoutjs 3.2.0无法找到我的";点击";viewmodel中的绑定函数
我最喜欢的ViewModel:Knockout.js knockoutjs 3.2.0无法找到我的";点击";viewmodel中的绑定函数,knockout.js,Knockout.js,我最喜欢的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.observabl
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);
}
});
}
};
}
此viewmodel的实例应用于ko.applyBindings()
这依赖于另一个名为:TaskList viewModel的任务的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"> </i>Done</button>
</div>
</div>
</li>
</ul>
-
多恩
但是有些地方工作不正常,因为Knockout无法在TaskList
viewmodel中找到removeTask
函数,该函数在Knockout的foreach
绑定中运行
错误消息是:
ReferenceError:removeTask未定义
除了您的addNewTask
方法之外,是否有其他代码将项目添加到任务
数组?@nemesv有一部分代码将从服务器接收的数据分配给任务
数组。这发生在$(文档).ready()
中的$(文档).ready()
中的该代码中,您是否也使用了正确的任务列表
构造函数?@nemesv感谢mate。现在可以了。非常感谢。