我已经使用knockout-mapping插件将我的json数组绑定到了淘汰赛
JSON
{
"info":[
{
"Name":"Noob Here",
"Major":"Language",
"Sex":"Male",
"English":"15",
"Japanese":"5",
"Calculus":"0",
"Geometry":"20"
},
{
"Name":"Noob Here",
"Major":"Calculus",
"Sex":"Female",
"English":"0.5",
"Japanese":"40",
"Calculus":"20",
"Geometry":"05"
}
]
}
绑定
var data = [];
$.each(data1.info, function (index, element) {
data.push({
English: element.English,
Japanese: element.Japanese,
Calculus: element.Calculus,
Geometry: element.Geometry,
name: element.Name,
major: element.Major,
sex: element.Sex
});
});
dataFunction.prototype = function () {
var getAllItems = function () {
var self = this;
ko.mapping.fromJS(data, {}, self.Items);
};
现在我想提醒英语的价值。
我在alert(this.English());
内尝试了dataFunction.prototype
,但它不起作用。
如何提醒该值?
JS-Bin代码:http://jsbin.com/ipeseq/4/edit
答案 0 :(得分:1)
您需要定义正确的视图模型,并在标记中使用该模型。
我将一个视图模型与自定义视图模型映射放在一起,我将数据映射到我可以在标记中使用的名为“Student”的对象。这个对象用ko.computed扩展,计算总数(在这个对象中,你可以读取和操作你的observables )。
var Student = function(data) {
var self = this;
ko.mapping.fromJS(data, { }, self);
self.total = ko.computed(function() { // Calculate total here
return self.English() + self.Japanese() + self.Calculus() + self.Geometry();
});
};
var viewModelMapping = { // Map all objects in 'info' to Student objects
'info': {
create: function(options) {
return new Student(options.data);
}
}
};
var ViewModel = function(data) { // Create a view model using the mapping
var self = this;
ko.mapping.fromJS(data,viewModelMapping,self);
}
$(document).ready(function () {
vm = new ViewModel(data);
ko.applyBindings(vm);
});
您可以看到生成的JSBin代码here
您可以在使用“创建”自定义对象构建和使用“更新”自定义对象 <{3}}
中阅读更多内容