【发布时间】:2018-03-27 10:45:05
【问题描述】:
我想从表单字段中获取值并将它们作为对象保存到 observableArray 中。并将它们显示在表格中。所以,每次我点击“添加”按钮时,表格都应该更新,但它不起作用。
<select data-bind="options: gradeList, optionsText: 'Name', value: selectedGrade"></select>
<input type="text" data-bind="value: komark" />
<button data-bind="click: addMark">Add</button>
<table>
<thead>
<tr>
<th>SN</th>
<th>Name</th>
<th>Mark</th>
</tr>
</thead>
<tbody data-bind="foreach: allMarks">
<tr>
<td data-bind="$data.id"></td>
<td data-bind="$data.name"></td>
<td data-bind="$data.mark"></td>
</tr>
</tbody>
</table>
<p data-bind="text: allMarks"></p>
这是我的html。 'gradeList' 也是一个 observableArray,但它可以工作,我得到了不错的下拉菜单。在最后一个“p”元素上,每次单击“添加”按钮都会更新文本,并使用 [Object object] 文本,但表格永远不会更新。
var newModel = function () {
var self = this;
self.komark = ko.observable();
self.mark = ko.observable();
self.selectedGrade = ko.observable();
self.gradeList = ko.observableArray([]);
self.allMarks = ko.observableArray([]);
self.loadAllGrades = function () {
$.ajax({
type: "GET",
dataType: "text",
url: "studenthandler.ashx",
data: { "action": "getAllGrades", "id": 0 },
success: function (res) {
self.gradeList(JSON.parse(res));
},
error: function () {
alert("Failed to load.\nHit Refresh.");
}
});
};
self.addMark = function () {
// console.log("button clicked");
self.mark({ "id": self.selectedGrade().Id, "name": self.selectedGrade().Name, "mark": self.komark() });
console.log(self.mark());
self.allMarks.push(self.mark());
console.log(self.allMarks());
};
self.loadAllGrades();
}
这是我的 javasript。 'mark' 和 'allMarks' 的值在控制台中更新,但 TABLE 永远不会更新。
【问题讨论】: