我已经使用knockout映射插件将我的json数组绑定到knockout
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);
};现在我想提醒一下英语的价值。
我在dataFunction.prototype中尝试了alert(this.English());,但它不起作用。
如何提醒该值?
JS-Bin代码:http://jsbin.com/ipeseq/4/edit
发布于 2013-03-23 05:00:57
你需要定义一个合适的视图模型,并在你的标记中使用它。
我将一个视图模型与一个自定义视图模型映射组合在一起,将您的数据映射到我称为“Student”的对象中,以便在您的标记中使用。我用一个计算总数的ko.computed扩展了这个对象(在这个对象中,您可以读取和操作您的观察值)。
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
您可以在使用“create”的定制对象构造和使用“update”的定制对象更新部分here中阅读更多信息
https://stackoverflow.com/questions/15574032
复制相似问题