2012-07-20 64 views
2

如何将我的JSON对象绑定knockoutjs表,这是我的JSON:绑定JSON在knockoutjs

"{\"Sport\":[{\"Name\":\"nana\",\"Description\":\"lmkmsdqd\",\"EndDate\":\"2012-07-22T00:00:00\"}, 
       {\"Name\":\"sfqsdffqf\",\"Description\":\"lkqjskdlqsd\",\"EndDate\":\"2012-07-22T00:00:00\"}], 
    \"Music\":[{\,\"Name\":\"nana\",\"Description\":\"lmkmsdqd\",\"EndDate\":\"2012-07-22T00:00:00\"}, 
       {\"Name\":\"sfqsdffqf\",\"Description\":\"lkqjskdlqsd\",\"EndDate\":\"2012-07-22T00:00:00\"}]}" 

请建议我如何可以绑定它!

+0

这不是有效的JSON。所有的斜线从哪里来的?在音乐部分的开头还有一个悬挂的逗号。 – Tyrsius 2012-07-20 16:16:38

+0

斜线来自JSON.NET,我有我的转换对象IKE在此:JsonConvert.SerializeObject(model.BuzzCompaignByInterest); – ucef 2012-07-20 16:50:55

+1

请看到这一点:http://stackoverflow.com/questions/9087253/why-is-json-net-adding-all-these-backslashes – Tyrsius 2012-07-20 17:47:25

回答

6

好了,所以我放在一起粗fiddle展示一些有约束力的概念,以及视图模型建设。我不得不清理你的JSON来做到这一点。它演示模板,foreach和文本绑定。如果您还没有这样做,我强烈建议您通过tutorials on the knockout site

这里是HTML绑定:

Sports 
<ul data-bind="template: { name: 'listingTemplate', foreach: sports}"></ul> 
</br> 
Music 
<ul data-bind="template: { name: 'listingTemplate', foreach: music}"></ul> 

<script type="text/html" id="listingTemplate"> 
<li> 
    <span data-bind="text: name"></span></br> 
    <span data-bind="text: description"></span></br> 
    <span data-bind="text: endDate"></span></br></br> 
</li> 
</script>​ 

和的ViewModels:

var Listing = function(data) { 
    this.name = ko.observable(data.Name || ''); 
    this.description = ko.observable(data.Description|| ''); 
    this.endDate = ko.observable(data.EndDate|| ''); 
}; 

var ViewModel = function(data) { 
    this.sports = ko.observableArray(
     ko.utils.arrayMap(data.Sport, function(i) {return new Listing(i);}) 
    ); 
    this.music = ko.observableArray(
     ko.utils.arrayMap(data.Music, function(i) {return new Listing(i);}) 
    ); 
};