2012-01-02 26 views
0

我是相當新的淘汰賽插件,我試圖用這個插件建立一個commentthread。我有一些問題,當一個子註釋綁定到父註釋時,期望的json字符串化對象應該是下面的一些東西;(關於使用Knockout插件)如何綁定子對象數組作爲observablearray父對象observablearray

[ 
    { 
    CreatedBy: "user 1", 
    CreatedOn: Date(), 
    Description: "comment 1", 
    ChildFeeds: [ 
       { 
        CreatedBy: "user 2", 
        CreatedOn: Date(), 
        Description: "comment 1-1" 
       }, 
       { 
        CreatedBy: "user 3", 
        CreatedOn: Date(), 
        Description: "comment 1-2" 
       }, 
       { 
        CreatedBy: "user 4", 
        CreatedOn: Date(), 
        Description: "comment 1-3" 
       } 
       ] 
    }, 
    { 
    CreatedBy: "user 5", 
    CreatedOn: Date(), 
    Description: "comment 2", 
    ChildFeeds: [ 
       { 
        CreatedBy: "user 6", 
        CreatedOn: Date(), 
        Description: "comment 2-1" 
       }, 
       { 
        CreatedBy: "user 7", 
        CreatedOn: Date(), 
        Description: "comment 2-2" 
       } 
       ] 
    }, 
] 

但是當我運行的代碼獲取下面的數據,而不是上述的結構。

[ 
    { 
    "CreatedBy": "user 1", 
    "CreatedOn": "Mon Jan 02 2012 15:50:51 GMT+0200 (Turkey Standard Time)", 
    "Description": "comment 1", 
    "ChildFeeds": [ 
     { 
     "ChildFeeds": [ 
      { 
      "CreatedBy": "user 2", 
      "CreatedOn": "Mon Jan 02 2012 15:50:51 GMT+0200 (Turkey Standard Time)", 
      "Description": "comment 1-1" 
      }, 
      { 
      "CreatedBy": "user 3", 
      "CreatedOn": "Mon Jan 02 2012 15:50:51 GMT+0200 (Turkey Standard Time)", 
      "Description": "comment 1-2" 
      }, 
      { 
      "CreatedBy": "user 4", 
      "CreatedOn": "Mon Jan 02 2012 15:50:51 GMT+0200 (Turkey Standard Time)", 
      "Description": "comment 1-3" 
      } 
     ] 
     } 
    ] 
    }, 
    { 
    "CreatedBy": "user 5", 
    "CreatedOn": "Mon Jan 02 2012 15:50:51 GMT+0200 (Turkey Standard Time)", 
    "Description": "comment 2", 
    "ChildFeeds": [ 
     { 
     "ChildFeeds": [ 
      { 
      "CreatedBy": "user 6", 
      "CreatedOn": "Mon Jan 02 2012 15:50:51 GMT+0200 (Turkey Standard Time)", 
      "Description": "comment 2-1" 
      }, 
      { 
      "CreatedBy": "user 7", 
      "CreatedOn": "Mon Jan 02 2012 15:50:51 GMT+0200 (Turkey Standard Time)", 
      "Description": "comment 2-2" 
      } 
     ] 
     } 
    ] 
    } 
] 

在這裏你會發現,因爲錯誤編碼的,不幸的是我複製ChildFeeds對象數組兩次,每次父對象..你可以從這裏http://jsfiddle.net/6qAmu/5/

發現代碼什麼是最好的方法實現這個問題?

感謝

回答

2

現在你ChildFeedModel是包含ChildFeeds observableArray一個對象,所以當你將這個到ChildFeeds財產上的wallfeedsmodel,你最終與雙ChildFeeds

一種選擇是讓您的ChildFeedsModel實際上是observableArray。所以,你可以創建一個observableArray,用任何附加的方法/屬性擴展它,然後返回它。

喜歡的東西:

var childFeedModel = function(ChildFeeds) { 
    var result = ko.observableArray(); 

    result.addChildFeed = function(tempChildFeed) { 

     result.push({ 
      CreatedBy: tempChildFeed.CreatedBy, 
      CreatedOn: tempChildFeed.CreatedOn, 
      Description: tempChildFeed.Description 
     }); 
    }; 

    ko.utils.arrayForEach(ChildFeeds, function(feed) { 
     result.addChildFeed(feed); 
    }); 

    return result; 
}; 

我改變了它開始與小寫字母,因爲創建一個(它總是返回一個新的observableArray)時,它現在不需要new聲明。現在

,在你wallfeedsmodel你只需給它分配喜歡:

return { 
     CreatedBy: singlefeed.CreatedBy, 
     CreatedOn: singlefeed.CreatedOn, 
     Description: singlefeed.Description, 
     ChildFeeds: childFeedModel(singlefeed.ChildFeeds) 
    }; 

樣品在這裏:http://jsfiddle.net/rniemeyer/xAKK5/

+0

這是偉大的太感謝你了 – salihozkul 2012-01-02 14:56:34

相關問題