1
所以,在我的第一个星期,我想我已经得到了良好的原型: (下调和去除ajaxy话费)KnockoutJS 2.0映射并且使用基因敲除修改映射对象
http://jsfiddle.net/NelsonLamprecht/39dfx/
"use strict";
var steeringTeamSheetViewModel = function (serviceUrl) {
var self = this;
self.viewModel = ko.mapping.fromJS([]);
self.InitializeAjax = function() {
//abbreviated
};
self.GetData = function() {
//abbreviated
var data = {
"Sections": [{
"ProjectType": "BUSINESS EXPANSION",
"Projects": [{
"ID": "767a46a2-ddba-435c-a9f9-fdb9f0175337",
"ItemOrder": 0,
"ProjectName": "project abc"
}, {
"ID": "0e36d7da-92e6-4f1b-939d-936d6e759115",
"ItemOrder": 0,
"ProjectName": "project abc"
}, {
"ID": "f6e447d4-955d-48e0-bcdf-6db9044b7a89",
"ItemOrder": 0,
"ProjectName": "project a"
}]
}, {
"ProjectType": "OPER & MAINT - EFFICIENCY",
"Projects": [{
"ID": "9883a3c8-d01e-4fc9-8f66-9b46d720afde",
"ItemOrder": 0,
"ProjectName": "project q"
}]
}, {
"ProjectType": "OTHER",
"Projects": [{
"ID": "f1ccfa79-c5b1-4880-b5a1-1c2350e709e1",
"ItemOrder": 0,
"ProjectName": "project 1"
}]
}]
};
self.ProcessRetrievedData(data);
};
self.ProcessRetrievedData = function (retrievedData) {
self.viewModel(retrievedData);
};
self.GetData();
};
var steeringTeamSheetService = 'someurl';
var sts = new steeringTeamSheetViewModel(steeringTeamSheetService);
ko.applyBindings(sts);
我现在试图做的是将ko.oberservableArray更改为另一个绑定,如 .indexed(),它在那里漂浮。
http://jsfiddle.net/NelsonLamprecht/39dfx/19/
"use strict";
var steeringTeamSheetViewModel = function (serviceUrl) {
var self = this;
var mapping = {
'sections': {
create: function(options) {
alert(options);
}
}
}
self.viewModel = ko.mapping.fromJS([],mapping);
self.InitializeAjax = function() {
//abbreviated
};
self.GetData = function() {
//abbreviated
var data = {
"Sections": [{
"ProjectType": "BUSINESS EXPANSION",
"Projects": [{
"ID": "767a46a2-ddba-435c-a9f9-fdb9f0175337",
"ItemOrder": 0,
"ProjectName": "project abc"
}, {
"ID": "0e36d7da-92e6-4f1b-939d-936d6e759115",
"ItemOrder": 0,
"ProjectName": "project abc"
}, {
"ID": "f6e447d4-955d-48e0-bcdf-6db9044b7a89",
"ItemOrder": 0,
"ProjectName": "project a"
}]
}, {
"ProjectType": "OPER & MAINT - EFFICIENCY",
"Projects": [{
"ID": "9883a3c8-d01e-4fc9-8f66-9b46d720afde",
"ItemOrder": 0,
"ProjectName": "project q"
}]
}, {
"ProjectType": "OTHER",
"Projects": [{
"ID": "f1ccfa79-c5b1-4880-b5a1-1c2350e709e1",
"ItemOrder": 0,
"ProjectName": "project 1"
}]
}]
};
self.ProcessRetrievedData(data);
};
self.ProcessRetrievedData = function (retrievedData) {
self.viewModel(retrievedData);
//I think I should be using something like
//self.viewModel = ko.mapping.fromJSON(retrievedData,mapping,{});
};
self.GetData();
};
var steeringTeamSheetService = 'someurl';
var sts = new steeringTeamSheetViewModel(steeringTeamSheetService);
ko.applyBindings(sts);
然而,如果没有这一切,我不认为我下面从web服务(C#)建立模型,并获取数据正确的模式。
有人可以验证我正在做这个权利,以及帮助创建模式?
这确实工作,我能够通过映射对象附加到创建方法。我确实发现ko.mapping速度很慢,所以我创建了自己的方法,实际上是将嵌套数组映射到正确的对象。谢谢 – Nelson