2012-02-14 20 views
6

Bıyık ile Backbone.JS kullanıyorum, böylece temposlarımı oluşturmak için MyModel.toJSON() yöntemini kullanıyorum. Bu, yalnızca özniteliklere erişim ile ayrılır. Her zaman hesaplanan bazı öznitelikler nasıl olabilir?Backbone.JS, hesaplanan özniteliklere sahip modelleri nasıl kullanır?

Backbone.JS belgelerine baktım ve validate() öğesini geçersiz kılmak için işe yarayabilir, ancak bu bir kesmek gibi görünür ve sonsuz döngülere neden olabilir.

Ayrıca, bir özellik yerine bir değer oluşturmayı denedim, ancak kullanmayı denediğimde Bıyık bir değer alamıyor.

+0

JSON'a geçersiz kıl: orijinal ile JSON arasında arama yapıp, hesaplanan özniteliklerinizi sonuca ekleyin. – jdigital

cevap

3

Şu anda bunu yapıyorum. Bir modeli başlatırken hesaplamaları yapıyorum ve otomatik olarak yeniden hesaplamak için modelde değişiklikler için bir dinleyici ekliyorum.

... 
initialize: function() { 
    console.log('Lead:initialize'); 
    _.bindAll(this, 'validate', 'calculate'); 
    this.bind('change', this.setCalculations, this); 
    this.setCalculations(); 
}, 
setCalculations: function() { 
    this.set({ calculations: this.calculate() }, { silent: true }); 
}, 
calculate: function() { 
    // do the calculations and return 
}, 
... 
+0

Sonsuz döngü oluşturmasını önlemek için farklı bir şey mi yaptınız? Bunu denedim ve bir model oluşturabilirim, ama ilk kez bir şey ayarladığımda sonsuz bir döngü elde ediyorum. –

+0

Oh! Afedersiniz! "SetCalculations" içinde – abraham

0

Ben doğru soruyu anlamadım, bilmiyorum, ama:

Sen gerçek bir model bıyık geçmek olmaz mı? örneğin, örneğin,

Gerçek modeli şablona aktardığınızda. Sonra bir şablon

<td class="quantity">   
    <input type="text" value="<%= model.get('quantity') %>" name="quantity" /> 
</td> 


<td> 
    <%= model.getTotalPrice() %> 
</td> 

var Ve ben aslında gerçek modelin alawys, benim şablonları model.toJSON @ geçmesine asla

getTotalPrice: -> 
    total_price = @get('price') * @get('quantity') 
    total_price + total_price * @get('tax_rate') 

modelinde sen() getTotalPrice ilan ediyorum.

+0

içinde ', {sessiz: doğru}' un olduğunu unuttum Bu işe yaramaz çünkü Bıyık (http://mustache.github.com/) kasıtlı olarak mantıksızdır. Öznitelikleri nesneden alabilirsiniz, ancak .get() öğesini arayamazsınız. –

İlgili konular