0

我有一个表单,您可以在其中添加多个任务,每个任务都有一个标题和一个选项,如果您选择了一个特定选项,我想添加一个表格,您可以在其中添加一个或多个注释。我想不通的是如何将任务的注释绑定到该特定任务以及如何收听每个任务的 selectedOption?这是我第一次使用淘汰赛。

<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>
4

1 回答 1

1

如果你给每个任务一个 selectedOption 属性和一个 notes 属性,它们的值将绑定到它们的父任务。

看看这个(小提琴:http: //jsfiddle.net/jRyS7/2/):

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());
于 2013-10-27T21:31:36.700 回答