Knockout.js 订阅可观察数组中的可观察元素

Knockout.js subscribe to observable element inside observable array

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);

在课程构造函数中,您创建了全新的可观察对象,然后仅将旧可观察对象的值分配给它。并且您订阅了这个新的 observable。

然后,在创建后您尝试更改 'old' 可观察对象,如果您订阅它的更改 - 您将看到它们。但是,在 newCourse 中创建的可观察对象保持不变。

尝试替换

self.newCourseNameText("");
self.newCourseLecturerText("");

self.newCourse.name("");
self.newCourse.lecturer("");