Knockout.js foreach的敲除表单绑定

Knockout.js foreach的敲除表单绑定,knockout.js,Knockout.js,我有一个表单,您可以在其中添加多个任务,每个任务都有一个标题和一个选项,如果您选择了一个特定选项,我想添加一个表,您可以在其中添加一个或多个注释。我搞不懂的是如何将任务的笔记绑定到该特定任务,以及如何聆听每个任务所选的选项?这是我第一次使用击倒 <fieldset data-bind="foreach: tasks"> Title:<input type="text" data-bind="value: title"/> Option: <sele

我有一个表单,您可以在其中添加多个任务,每个任务都有一个标题和一个选项,如果您选择了一个特定选项,我想添加一个表,您可以在其中添加一个或多个注释。我搞不懂的是如何将任务的笔记绑定到该特定任务,以及如何聆听每个任务所选的选项?这是我第一次使用击倒

<fieldset data-bind="foreach: tasks">
    Title:<input type="text" data-bind="value: title"/> 
    Option: <select data-bind="options: $root.option, optionsCaption: 'Select', value: selectedOption"></select>

    <table>
        <tbody data-bind="foreach: notes ">
           <tr>
              <td><input type="text" data-bind="value: note"/></td>
           </tr>    
        </tbody>
    </table>
   <button data-bind="click: addRow">Add note</button>
</fieldset>
<button data-bind="click: addTask">Add task</button>

标题:
选项:
添加注释
添加任务

如果为每个任务赋予selectedOption属性和notes属性,则它们的值将绑定到其父任务

看看这个(小提琴:):

var注释=函数(注释){
var self=这个;
self.note=ko.可观察(note);
}
var任务=功能(标题、注释){
var self=这个;
self.title=ko.可观察(title);
self.selectedOption=ko.observable();
self.notes=ko.observearray();
对于(var i=0;i
var Note = function(note){
    var self = this;
    self.note = ko.observable(note);
}

var Task = function(title, notes){
    var self = this;
    self.title = ko.observable(title);
    self.selectedOption = ko.observable();
    self.notes = ko.observableArray();
    for (var i = 0; i< notes.length; i++){ 
        self.notes.push(new Note(notes[i]));
    }   
    self.addRow = function(){
        self.notes.push(new Note("newNote"));
    }
}

var VM = function(){
    var self = this;

    self.option = [
        "option1",
        "option2"
        ]

    self.tasks = ko.observableArray([
        new Task("task1", ["note1.1", "note1.2"]),
        new Task("task2", ["note2.1", "note2.2"]),
        new Task("task3", ["note3.1", "note3.2"])
    ])

    self.addTask = function(){
        self.tasks.push(new Task("newTask", ["newNote1", "newNote2"]));
    }

}

        ko.applyBindings(new VM());