js我的课程在更改时不订阅可观察数组。控制台日志不显示。我不知道如何解决它。有什么想法吗?
class Course {
constructor(data) {
this.id = ko.observable(data.id);
this.name = ko.observable(data.name);
this.lecturer = ko.observable(data.lecturer);
this.name.subscribe(function(newName) {
console.log(newName);
});
this.lecturer.subscribe(function(newLecturer) {
console.log(newLecturer);
});
}
}
function ProtoModel() {
var self = this;
self.courses = ko.observableArray([]);
self.addCourse = function() {
const newCourse = new Course({
name: this.newCourseNameText(),
lecturer: this.newCourseLecturerText()
});
self.courses.push(ko.mapping.toJS(newCourse));
self.newCourseNameText("");
self.newCourseLecturerText("");
};
}
var model = new ProtoModel();
ko.applyBindings(model);
答案 0 :(得分:1)
在Course构造函数中,您创建了全新的observable,然后仅将旧的observable中的值赋值给它。并且您订阅了这个新的可观察对象。
然后,在创建之后,您正在尝试更改“旧”可观察对象,如果您订阅其更改 - 您将看到它们。但是,在新课程中创建的可观察者保持不变。
尝试替换
self.newCourseNameText("");
self.newCourseLecturerText("");
带
self.newCourse.name("");
self.newCourse.lecturer("");