2012-11-03 19 views
6

Câu hỏi Ember thẳng về phía trước ở đây, (tôi hy vọng!).Lỗi nhật ký bộ nhớ Ember: "Nội dung của Ember.CollectionView phải triển khai Ember.Array"

Tôi có thiết lập dữ liệu Ember đơn giản. Một ứng dụng có nhiều phiên bản. Dưới đây là mô hình của tôi App:

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

Router của tôi là khá đơn giản:

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')); 
     } 
     }) 
    }) 
    }) 
}); 

Và các quan điểm và các bộ điều khiển giống như thế này:

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({ 
}); 

Khi tôi chạy nó tiếc là tôi nhận được lỗi : an Ember.CollectionView's content must implement Ember.Array. You passed <App.Version:ember519>.

Thật thú vị, nếu tôi thêm dấu ngoặc xung quanh [appTestController.get('content.versions')] trong bộ định tuyến, nó sẽ không khiếu nại và tạo một mảng với đối tượng Phiên bản đầu tiên một cách chính xác. Nhưng nó dường như không muốn hiển thị nhiều hơn một đối tượng.

Bất kỳ mẹo nào?

+0

Lỗi là thẳng về phía trước, nó nói rằng App.Version không phải là một instanceOf Array, Dường như bạn đang cố gắng đặt đối tượng thành thuộc tính nội dung của chế độ xem bộ sưu tập (có mã tôi không thể nhìn thấy trong câu hỏi), đó là loại Ember.Array() ... Rõ ràng tôi Nếu tôi sai –

+0

Đó là điều buồn cười mặc dù. Tôi muốn gửi mảng nội dung với một mảng nội dung: ngoại trừ 'appTestController.get ('content.versions')' đang trả về một đối tượng duy nhất thay vì một mảng ?! –

+0

appTestController là ObjectController hoặc ArrayController? & cũng như thế nào bạn truy vấn cửa hàng? –

Trả lời

11

Cuối cùng, nó không phải là mô hình, xem các đối tượng hoặc bộ điều khiển! Nó thậm chí không phải là bộ định tuyến.

Đó là versions.handlebars. Tôi đã có một vòng lặp trong một vòng lặp trong mẫu của tôi, như sau:

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

tôi sai muốn viết:

each comment in version 

... nơi tôi đã có nghĩa là để viết:

each comment in version.comments 

:) Điều đó giải thích thông báo lỗi. Hy vọng điều này sẽ giúp người khác!

Các vấn đề liên quan