Company
adında bir Backbone.Model sahibiyim. Benim Company
modelimde Employee
modellerini içeren Employees
Backbone.Collection vardır.Özellikleri bir öznitelik olarak ele almak istemediğim bir Backbone.Model'e nasıl geçirebilirim?
Employee
modellerini, Employees
koleksiyonunu doldurmaya başladığımda, bunlara ait oldukları Company
referansına sahip olmak isterim. Ancak Company
'u geçtiğimde, Employee
'un özelliklerinden biri olur. Bu, Employee
kaydetmek için gittiğimde bir sorun, yönteminin Company
nesnesini içerdiğinden, tüm veritabanında sakladığım yabancı anahtar tamsayı company_id
.
Keşke, çekirdek özniteliklerinin bir parçası olmayan model özelliklerini kabul eden ikinci bir parametre olan Backbone.Model olmasını isterdim. Bunu nasıl aşabilirim? Employee
modelimi gerçekleştirebileceğimi ve daha sonra Company
'u ekleyebileceğimin farkındayım, ancak tüm ödevleri dışarıdaki özellikleri eklemek yerine geleneksel bir "yapıcıda" gerçekten yapmak istiyorum.
ör .:
Employee = Backbone.Model.extend({});
Employees = Backbone.Collection.extend({
model: Employee
});
Company = Backbone.Model.extend({
initialize: function() {
this.employees = new Employees({});
}
});
c1 = new Company({id: 1});
e = new Employee({name: 'Joe', company_id: 1, company: c1});
c1.employees.add(e);
e.get('company'); // => c1
e.save(); // BAD -- attempts to save the 'company' attribute, when in reality I only want to save name and company_id
//I could do
c2 = new Company({id: 2});
e2 = new Employee({name: 'Jane', company_id: 2});
e2.company = c2;
c2.employees.add(e);
e.company; // => c2
//I don't like this second method because the company property is set externally and I'd have to know it was being set everywhere in the code since the Employee model does not have any way to guarantee it exists
Backbone.Model sadece burada tek nitelikler dizisi kabul gösteriler: Ben Backbone-ilişkisel denemek için ama Omurga beri kendisi halen değişiyor cazip http://documentcloud.github.com/backbone/#Model-constructor Omurganın hızlı gelişimine ayak uyduramayan uzantılara yatırım yapmaktan korkuyorum. –
Fakat baktığımda, Backbone.Model'in ilklendirme işlevinin hem özellikleri hem de seçenekleri aldığını görüyorum. Benim hatam. –
Dokümanlar güncellenmedi. [Yapıcı kaynak] bölümüne bakın (https://github.com/documentcloud/backbone/blob/master/backbone.js#L132) – shesek