2014-01-18 23 views
2

我的搜索表單與骨幹工程.. exept它allways說,該項目沒有找到,所以我認爲我allways發送一個空的數組所以是的,那麼它的邏輯,它不會找到任何東西。主幹搜索(allways not found)

我的信息搜索結果的看法:

var ArtikelSearchResultsView = Backbone.View.extend({ 
    el: '#searchResults', 
    render: function (query_encoded) { 
    var query = decodeURIComponent(query_encoded.replace(/\+/g, "%20")); 

    var result_artikels = _.filter(this.model.models, function (artikel_model) { 
     var artikel = artikel_model.attributes; 

     for (var key in artikel) { 
     if (artikel[key].toLowerCase().indexOf(query.toLowerCase()) >= 0) 
     { 
      return true; 
     } 
     } 
     return false; 
    }); 

    // Show results 
    var template = $("#search-results").html(); 
    var result_html = _.template(template, { artikels: result_artikels, query: query }); 

    this.$el.html(result_html); 
    } 
}); 

我的路由器發送該:

searchResults: function(query){ 
     artikelSearchView.render(query); 
     var artikelSearchResultsView = new ArtikelSearchResultsView({ model: Artikel }); 
     artikelSearchResultsView.render(query); 

    } 

ARTIKEL是在這種情況下:

var Artikel = Backbone.Model.extend({ 
    urlRoot: 'api/items.json', 
    defaults: { 
     titel: 'Titel niet opgegeven', 
     url_titel: 'unieke sleutel urltitel', 
     img_path: 'geen image toegevoegd', 
     commentaar: 'Commentaar niet opgegeven', 
     categorie: 'Categorie niet opgegeven', 
     waardering: 0, 
     artikel: 'Artikel niet opgegeven' 
    }, 
    initialize: function(){ 

     if(!this.get('description')){ 
     var lazy = 'This user was too lazy too add a description'; 
     this.set('description', lazy); 
     } 
    } 
}); 

全碼:http://pastebin.com/Y9zi6aGH(Awere,我使用ARTIKEL和Artikels以不同的方式,我知道這是不好的做法,但這是我現在的方式)所以我的問題是:有人可以修理我這個,所以我得到searchresult?如果我按「a」應該給我所有的物體,但它沒有給我任何結果。謝謝

回答

1

我已經做了一些改動你的代碼才能工作:

1-在你看來ArtikelSearchResultsView,我已綁定它的模式(集合)重置事件給它的渲染方法,因此一旦它的型號是從它稱之爲服務器重置的Render方法:

var ArtikelSearchResultsView = Backbone.View.extend({ 
    el: '#searchResults', 
    initialize: function(){ 
     this.model.bind('reset', this.render, this); 
    } ... 

2-變化

var artikels = new Artikels(); 
var artikel = new Artikels(); 

var artikels = new Artikels(); 
var artikel = new Artikel(); 

3-最後更改路由器:

searchResults: function(query){ 
    var artikelSearchResultsView = new ArtikelSearchResultsView({ model: artikels }); 
    artikels.fetch(); 
} 

我還去掉從ArtikelSearchResultsView過濾渲染方法,以測試它,現在「this.model.models」填充了你從服務器收到的數據。