2012-11-03 26 views
6

काफी सीधी-सपाट एंबर प्रश्न यहाँ "Ember.CollectionView की सामग्री Ember.Array को लागू करना चाहिए", (मुझे आशा है!)।एंबर रूटर लॉग त्रुटि:

मैं एक साधारण एंबर-डेटा सेटअप। एक ऐप में कई संस्करण हैं।

App.App = DS.Model.extend({ 
    name: DS.attr('string'), 
    publicKey: DS.attr('string'), 
    versions: DS.hasMany('App.Version', { key: 'version_ids' }) 
}); 

मेरे रूटर काफी सरल है: यहाँ मेरी अनुप्रयोग मॉडल है

App.Router = Ember.Router.extend({ 
    location: 'hash', 
    root: Ember.Route.extend({ 
    index: Ember.Route.extend({ 
     route: '/', 
     redirectsTo: 'dashboard' 
    }), 
    dashboard: ..., 
    app: Ember.Route.extend({ 
     route: '/:app_id', 
     connectOutlets: function(router, app) { 
     router.get('applicationController').connectOutlet('appTest', app); 
     }, 

     index: Ember.Route.extend({ 
     route: '/', 
     connectOutlets: function(router) { 
      appTestController = router.get('appTestController'); 
      appTestController.connectOutlet('addCommentOutlet', 'addComment', {}); 
      appTestController.connectOutlet('versions', appTestController.get('content.versions')); 
     } 
     }) 
    }) 
    }) 
}); 

और विचारों और नियंत्रकों इस तरह दिखेगा:

App.AppTestView = Ember.View.extend({ 
    templateName: 'app_test' 
}); 

App.VersionsView = Ember.View.extend({ 
    templateName: 'versions' 
}); 

App.AppTestController = Ember.ObjectController.extend({ 
}); 

App.VersionsController = Ember.ArrayController.extend({ 
}); 

जब मैं इसे चलाने के दुर्भाग्य से मैं त्रुटि मिलती है : an Ember.CollectionView's content must implement Ember.Array. You passed <App.Version:ember519>

दिलचस्प बात यह है कि अगर मैं राउटर में [appTestController.get('content.versions')] के आसपास ब्रैकेट जोड़ता हूं तो यह शिकायत नहीं करता है और पहले संस्करण ऑब्जेक्ट के साथ एक सरणी बनाता है। लेकिन ऐसा लगता है कि एक से अधिक ऑब्जेक्ट दिखाना नहीं है।

किसी भी सुझाव दिए गए?

+0

त्रुटि सीधे आगे है, यह कहना है कि App.Version एक instanceof सरणी नहीं है, ऐसा लगता है कि संग्रह देखें (जिसका कोड मैं प्रश्न में नहीं देख सकते हैं) की सामग्री संपत्ति के लिए एक वस्तु स्थापित करने के लिए कोशिश कर रहे हैं, जो एम्बर.एरे() के प्रकार का है ... मुझे साफ़ करें अगर मैं गलत हूं –

+0

हालांकि यह मजेदार बात है। मैं सामग्री सरणी को सामग्री की सरणी के साथ भेजना चाहता हूं: 'appTestController.get (' content.versions ') को छोड़कर' सरणी के बजाय एक ऑब्जेक्ट लौटा रहा है ?! –

+0

ऐपटेस्ट कंट्रोलर ऑब्जेक्ट कंट्रोलर या ऐरे कंट्रोलर है? और आप स्टोर से पूछताछ कैसे कर रहे हैं? –

उत्तर

11

अंत में, यह मॉडल, दृश्य वस्तुओं या नियंत्रक नहीं था! यह राउटर भी नहीं था।

यह versions.handlebars था।

{{#each version in controller}} 
    Version here 
    {{#each comment in version}} 
    {{comment.text}} 
    {{/each}} 
{{/each}} 

मैं गलत तरीके से लिखा था:

each comment in version 

... जहाँ मैं लिखने के लिए मतलब था:

each comment in version.comments 
मैं अपने टेम्पलेट में एक पाश के भीतर एक पाश, जैसा कि नीचे था

:) यह त्रुटि संदेश बताता है। उम्मीद है कि यह किसी और की मदद करता है!