Javascript Knockout JS:绑定动态行
我在绑定动态创建的dom元素时遇到了一些问题 代码: 此代码也在Javascript Knockout JS:绑定动态行,javascript,jquery,dynamic,knockout.js,observable,Javascript,Jquery,Dynamic,Knockout.js,Observable,我在绑定动态创建的dom元素时遇到了一些问题 代码: 此代码也在$中。每个(data.info,function(index,element){} 我想要像这样的东西 Var i=0; $.each(data.info, function(index, element) { function AppViewModel() { this.eng+i = ko.observable(element.English); this.jap+i = ko.observab
$中。每个(data.info,function(index,element){}
我想要像这样的东西
Var i=0;
$.each(data.info, function(index, element) {
function AppViewModel() {
this.eng+i = ko.observable(element.English);
this.jap+i = ko.observable(element.Japanese);
this.cal+i = ko.observable(element.Calculus);
this.geo+i = ko.observable(element.Geometry);
this.total+i = ko.computed(function() {
var tot=parseFloat(this.eng()) + parseFloat(this.jap()) + parseFloat(this.cal()) + parseFloat(this.geo());
return (tot);
}, this);
}
i++;
}
获取我的结果this.eng0=ko.observable()
注意:数据是从一个JSON对象获得的。我只包含了迭代路径。我是否可以建议使用a可能比使用jQuery的
每个并自己生成HTML更好?我建议将您的视图模型更改为类似以下内容:
function AppViewModel() {
this.items = ko.observableArray();
}
function ItemViewModel(element) {
this.eng = ko.observable(element.English);
this.jap = ko.observable(element.Japanese);
this.cal = ko.observable(element.Calculus);
this.geo = ko.observable(element.Geometry);
this.name = ko.observable(element.name);
this.major = ko.observable(element.major);
this.sex = ko.observable(element.sex);
this.total = ko.computed(function () {
var tot = parseFloat(this.eng()) + parseFloat(this.jap()) + parseFloat(this.cal()) + parseFloat(this.geo());
return (tot);
}, this);
};
<table>
<tbody data-bind="foreach: items">
<tr>
<td data-bind="text: name"></td>
<td data-bind="text: major"></td>
<td data-bind="text: sex"></td>
<td><input data-bind='value: eng' /></td>
<td><input data-bind='value: jap' /></td>
<td><input data-bind='value: cal' /></td>
<td><input data-bind='value: geo' /></td>
<td><strong data-bind='text: total' /></td>
</tr>
</tbody>
</table>
这里,AppViewModel是元素列表的容器,每个元素都是自己的ItemViewModel,具有您似乎拥有的属性
绑定此文件的html如下所示:
function AppViewModel() {
this.items = ko.observableArray();
}
function ItemViewModel(element) {
this.eng = ko.observable(element.English);
this.jap = ko.observable(element.Japanese);
this.cal = ko.observable(element.Calculus);
this.geo = ko.observable(element.Geometry);
this.name = ko.observable(element.name);
this.major = ko.observable(element.major);
this.sex = ko.observable(element.sex);
this.total = ko.computed(function () {
var tot = parseFloat(this.eng()) + parseFloat(this.jap()) + parseFloat(this.cal()) + parseFloat(this.geo());
return (tot);
}, this);
};
<table>
<tbody data-bind="foreach: items">
<tr>
<td data-bind="text: name"></td>
<td data-bind="text: major"></td>
<td data-bind="text: sex"></td>
<td><input data-bind='value: eng' /></td>
<td><input data-bind='value: jap' /></td>
<td><input data-bind='value: cal' /></td>
<td><input data-bind='value: geo' /></td>
<td><strong data-bind='text: total' /></td>
</tr>
</tbody>
</table>
当您从服务器获取JSON时,您可以使用Knockout、the或自己解析它们。我使用中的后一个选项创建了一个示例。Thanx。我想知道是否有任何方法可以将可观察对象绑定到动态元素,就像eng+1一样。我不确定“eng+1”或“dynamic elements”是什么意思?也许你应该尝试一下你想要的,然后问一个后续问题,这样如果你被卡住了。