Backbone.js 简单主干搜索页面-你会怎么做?

Backbone.js 简单主干搜索页面-你会怎么做?,backbone.js,search-form,Backbone.js,Search Form,我想用主干网实现一个简单的搜索页面。它不是一个单页应用程序,但仍然希望使用主干结构构建我的JavaScript代码。搜索页面由搜索表单和搜索结果组成。搜索是通过AJAX完成的,必须保存在历史记录中。从历史记录加载页面时,应将搜索查询参数加载到表单中。搜索表单和搜索结果可以实现为主干.View。然而,我有问题把它们粘在一起 我想我需要的是某种控制器。有一个主干网。路由器,但它是正确的地方吗?AJAX调用应该放在哪里 欢迎对此类页面的结构提出任何建议。您可以创建搜索模型。SearchModel将有一

我想用主干网实现一个简单的搜索页面。它不是一个单页应用程序,但仍然希望使用主干结构构建我的JavaScript代码。搜索页面由搜索表单和搜索结果组成。搜索是通过AJAX完成的,必须保存在历史记录中。从历史记录加载页面时,应将搜索查询参数加载到表单中。搜索表单和搜索结果可以实现为主干.View。然而,我有问题把它们粘在一起

我想我需要的是某种控制器。有一个主干网。路由器,但它是正确的地方吗?AJAX调用应该放在哪里


欢迎对此类页面的结构提出任何建议。

您可以创建
搜索模型。
SearchModel
将有一个类似于“performSearch(string)”的方法,可以触发ajax调用。当调用返回时,模型可以执行以下操作:

this.set("searchResults", ajaxResult)
您的视图可以绑定到模型的该属性:

// SearchResultsView
Backbone.View.extend({
    initialize: function() {
        this.model.on("change:searchResults", this.displayResults, this);
    },
    displayResults: function(model, results) {
        // do whatever...
    }
});
示例搜索表单视图以供参考:

Backbone.View.extend({
   events: {
      "submit": "formSubmitted"
   },
   formSubmitted: function(e) {
      this.model.performSearch(e.target.value);
   }
});
Backbone.Model.extend({
   performSearch: function(string) {
      // fire your ajax request.  provide a bound
      // _searchComplete as the callback
   },
   _searchComplete: function(results) {
     this.set("searchResults", results);
   }
});
示例
SearchModel
供参考:

Backbone.View.extend({
   events: {
      "submit": "formSubmitted"
   },
   formSubmitted: function(e) {
      this.model.performSearch(e.target.value);
   }
});
Backbone.Model.extend({
   performSearch: function(string) {
      // fire your ajax request.  provide a bound
      // _searchComplete as the callback
   },
   _searchComplete: function(results) {
     this.set("searchResults", results);
   }
});