2012-03-21 20 views
6

मैंने अभी knockout.js का उपयोग शुरू किया है और यह सामान्य बोली लगाने के साथ बहुत अच्छा काम करता है। मुझे देखने योग्य ऐरे के साथ एक समस्या है।knockout में JSON ऑब्जेक्ट से ko.observableArray बनाएं

मैं एक अवलोकन योग्य बनाना चाहता हूं और इसे Google फ़ीड एपीआई से एक JSON डेटा असाइन करना चाहता हूं। यहाँ JSON प्रारूप https://developers.google.com/feed/v1/devguide#resultJson

google.load("feeds", "1"); // Loads Google Feed API 
function FeedViewModel() 
{ 
    // Data 
    var self = this; 
    self.allEntries = null; 

    // Example property, and it works 
    self.feedHead = ko.observable("BBC News"); 

    var feed = new google.feeds.Feed("feeds.feedburner.com/BBCNews"); 
    feed.setResultFormat(google.feeds.Feed.JSON_FORMAT); 
    feed.includeHistoricalEntries(); 
    feed.setNumEntries(30); 

    // Loads feed results 
    feed.load(function (result) { 
     if (!result.error) {   
      self.allEntries = ko.observableArray(result.feed.entries); 

      // accessing the title from here is OK 
      alert(self.allEntries()[1].title); 
     }   
    }); 
} 

उपरोक्त उदाहरण में, है ViewModel से सरणी तक पहुँचने ठीक है, लेकिन मैं (ब्राउज़र के लिए) का उपयोग कर foreach ध्यान में रखते हुए यह प्रदर्शित करने के लिए की जरूरत है: allEntries

<h2 data-bind="text: feedHead">Latest News</h2> 
<!-- ko foreach:allEntries --> 
    <div class="lists"> 
     <a href="#" data-bind="text: title"></a> 
    </div> 
<!-- /ko --> 

लेकिन कुछ भी नहीं फोरच लूप कुछ भी नहीं देता है। देखने योग्य फ़ीडहेड ठीक है।

इसके अलावा मेरे पास कोई जेएस त्रुटि नहीं है। किसी भी मदद ..

+0

यकीन है कि आप तो अग्रिम सरणी बनाने के लिए, की जरूरत है अपने भार में आप उस सरणी में भरें ...... –

उत्तर

22

घोषित करने का प्रयास करें (जहां // डाटा है)

self.allEntries = ko.observableArray([]); 
लोड में

फिर ...

self.allEntries(result.feed.entries); 
+0

धन्यवाद कीथ, यह अच्छी तरह से काम करता है। – Maxali

+2

अरे मैक्सली, क्या आपके लिए जेएसएफआईडीडीएलई में काम कर रहे सबकुछ रखना संभव है? मैं वास्तव में प्रदान किए जाने वाले फ़ीड का एक कामकाजी उदाहरण देखना चाहता हूं। यह मेरे लिए सहायक साबित हो सकता है। समाधान के लिए धन्यवाद –

+0

+1। आश्चर्यचकित है कि इस जवाब में पहले से ही 10 वोट नहीं हैं क्योंकि यह इन प्रश्नों/उत्तरों में से एक है जो नॉकआउट का उपयोग करते समय लोगों से पूछने जा रहे हैं! : डी –

संबंधित मुद्दे