2014-06-12 30 views
6

Tôi muốn tạo một bản ghi trang mới. Mô hình trông giống như:Tạo dữ liệu emberRecord với mối quan hệ có mối quan hệ mà không cần lưu

var SiteModel = DS.Model.extend({ 
    name: attr(), 
    ... 

    languages: DS.hasMany('language'), 
}); 

Thuộc tính language mô tả nội dung của trang web có thể được viết. Để tạo biểu mẫu, tôi cần tạo mô hình trong tuyến đường của mình. Vì vậy, tôi muốn tạo ra một kỷ lục mới, mà không lưu này đến db:

var WebsitesNewRoute = Ember.Route.extend({ 
    model: function() { 
     return this.store.createRecord('site', { 
       languages: Ember.A() 
     }); 
    } 
} 

Đó không hoạt động như mong muốn, như tôi đã nhận lỗi sau: cannot set read-only property "languages" on object: <[email protected]:site::ember1012:null>>. Tại sao thuộc tính languages chỉ đọcChỉ? Theo như tôi biết tôi không cấu hình mà trong mô hình của tôi ...


Tôi biết câu hỏi Ember Data- createRecord in a hasMany relationship, nhưng trong trường hợp của tôi, tôi không muốn lưu bất cứ điều gì chưa (tôi chỉ muốn tạo ra các mô hình , vì vậy tôi có thể sử dụng nó trong mẫu của tôi).

Trả lời

6

Ember-Data xác định languages làm thuộc tính chỉ đọc vì không muốn bạn thay thế mảng. Cho dù bạn có đang tiết kiệm hay không, Ember-Data muốn bạn thêm các mối quan hệ với addObject và xóa các mối quan hệ với removeObject.

Vì vậy, nếu bạn muốn thêm một ngôn ngữ, bạn sẽ làm điều này:

model: function() { 
    var model = this.store.createRecord('site'); 
    var language = getLanguage(); 
    model.get('languages').addObject(language); 
    return model; 
} 

gì bạn đang làm bằng cách cho languages-createRecord, chủ yếu là gọi model.set('languages', Ember.A()), và Ember-Data không như thế .

Thật ngu ngốc, tôi biết, nhưng đó chỉ là cách thức hoạt động của Dữ liệu Ember.

+0

Thx để giải thích tại sao Ember đánh dấu nó là chỉ đọc. Đặt ngôn ngữ như bạn mô tả ở đây hoạt động thực sự. Nhưng tôi vẫn gặp lỗi đó. Tệ hơn nữa, ngay cả khi tôi chỉ viết 'return this.store.createRecord ('site');' trong hàm model, lỗi sẽ xuất hiện. –

+0

Điều đó rất có thể là một lỗi trong Ember-Data. Bất kỳ cơ hội nào bạn có thể tạo ra một JSBin sao chép lại vấn đề đó? – GJK

+0

Bất kỳ từ nào nếu đây là lỗi Ember-Data? Tôi chỉ gặp phải điều này bằng cách sử dụng ember-select-2 và một đa lựa chọn mà thiết lập một mối quan hệ hasMany ... –

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