gpt4 book ai didi

javascript - 与复杂 Knockout.js 对象的数据绑定(bind)

转载 作者:行者123 更新时间:2023-11-28 02:30:40 24 4
gpt4 key购买 nike

我在让 foreach 循环在 KnockOut.js 中工作时遇到问题,即使我尝试让代码抛出错误,它也不会抛出错误。就好像它根本没有尝试绑定(bind)到表。

var History = function (data) {
this.Average = ko.observable(data.Average);
this.Count = ko.observable(data.Count);
};

var DataSource = function (data) {
var convertData = function (array) {
return $.map(data.Data, function (option) {
return new History;
});
};

this.Data = ko.observableArray(this.convertData());

return {
'Data': this.Data
};
};

var dataMappingOptions = {
create: function (options) {
return new DataSource(options);
}
};

var dataModel = function () {
this.source = ko.mapping.fromJS({ 'Data': [], 'Percentage': 0 });
};

currentViewModel = new dataModel();
ko.applyBindings(currentViewModel);

我已经消除了很多复杂性,因为其他一切都有效。基本上,我使用 Knockout.Mappings 将 AJAX 响应映射到这些对象,并为计算字段添加函数。下面的 HTML 似乎忽略了我所做的一切;它将显示,但没有任何内容绑定(bind)到它。

<table>
<thead>
<tr>
<th>Average</th>
<th>Frequency</th>
</tr>
</thead>
<tbody data-bind="foreach: kjhkjh">
<tr>
<td data-bind="text: $data.Average()"></td>
<td data-bind="value: $data.Average"></td>
<td data-bind="text: $data.Average"></td>
<td data-bind="value: $data.Average()"></td>
<td>Test</td>
</tr>
</tbody>
</table>

由于 kjhkjh 对象没有绑定(bind),我认为它会抛出错误,但事实并非如此。即使我放入 source.Data 它也不会执行任何操作;它只显示静态表,没有任何绑定(bind)到它。

更新:为了从 Javascript 中的任何内容中获取值(value),我必须使用这样的东西:

console.log(currentViewModel.source.Data()[11].Average());

最佳答案

这部分似乎不正确。同一条语句中有两个返回值。尝试在 $.map(

之前删除 return
var convertData = function (array) {
return $.map(data.Data, function (option) {
return new History;
});
};

也可能是您正在为 DataSource 对象的私有(private)方法 convertData() 引用 this。从此处删除 this:

ko.observableArray(this.convertData());

关于javascript - 与复杂 Knockout.js 对象的数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14241566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com