2012-05-20 10 views
8

Backbone kullanarak basit bir arama sayfası uygulamak istiyorum. Tek bir sayfa uygulaması değil, yine de JavaScript kodumu Backbone kullanarak yapılandırmak isterim. Bir arama sayfası, bir arama formundan ve arama sonuçlarından oluşur. Arama AJAX üzerinden yapılır ve geçmişe kaydedilmelidir. Sayfa geçmişten yüklendiğinde, arama sorgusu parametreleri formda yüklenmelidir. Arama formu ve arama sonuçları Backbone.View's olarak uygulanabilir. Bununla birlikte, onları birbirine yapıştırırken problemlerim var.Basit Backbone arama sayfası - nasıl yapardınız?

Bir çeşit denetleyiciye ihtiyacım olduğunu düşünüyorum. Bir Backbone.Router var, ama doğru yer mi? AJAX çağrısı nereye yerleştirilmelidir?

Bu sayfa yapısıyla ilgili herhangi bir tavsiye memnuniyetle karşılanır.

cevap

10

Bir SearchModel oluşturabilirsiniz. SearchModel, ajax çağrınızı tetikleyen "performSearch (string)" gibi bir yönteme sahip olacaktır. Çağrı döndüğünde modeli gibi bir şey yapabileceğini:

this.set("searchResults", ajaxResult) 

ve görüşleriniz modelin o mülke bağlanabildiği:

Backbone.View.extend({ 
    events: { 
     "submit": "formSubmitted" 
    }, 
    formSubmitted: function(e) { 
     this.model.performSearch(e.target.value); 
    } 
}); 
: başvuru için

// SearchResultsView 
Backbone.View.extend({ 
    initialize: function() { 
     this.model.on("change:searchResults", this.displayResults, this); 
    }, 
    displayResults: function(model, results) { 
     // do whatever... 
    } 
}); 

örnek arama formu görünümü

örnek SearchModel referans için:

Backbone.Model.extend({ 
    performSearch: function(string) { 
     // fire your ajax request. provide a bound 
     // _searchComplete as the callback 
    }, 
    _searchComplete: function(results) { 
    this.set("searchResults", results); 
    } 
});