骨干搜索多个模型
Backbone search multiple-models
我最近一直在尝试Backbone,有一个非常基本的问题。
我需要搜索不同类型的记录,搜索 API 返回一个 JSON 响应,例如
{ foo:
[
{ name: 'foo1', url: '/foo1' },
{ name: 'foo2', url: '/foo2' }
],
bar:
[ { name: 'bar1', url: '/bar1' } ],
baz:
[ { name: 'baz1', url: '/baz1' } ]
}
我有一个Foo,Bar和Baz的骨干模型。一个集合,在获取时应该击中我的服务器并得到搜索结果。我尝试了类似的东西
window.searchEntities = Backbone.Collection.extend({
url: '/get_search_results'
model: function(attrs, options) {
//Typecast the JSON to Foo, Bar and Baz Models
});
});
但是,我不知道如何解析服务器返回的结果,以便我的集合包含模型 Foo、Bar 和 Baz?或者我应该调整服务器返回的结果,以便更容易地使用 Backbone 处理这个问题?
正如我看到您的 JSON 没有返回 3 个不同的模型,而是返回 3 个不同的集合,因为它们中的 3 个包含数组。
我认为你应该从头开始,如果我理解了你想返回一堆不同类型的模型,比如说:
[
{
type: "Foo",
name: "foo1",
url: "/foo1"
},
{
type: "Foo",
name: "foo2",
url: "/foo2"
},
{
type: "Bar",
name: "bar1",
url: "/bar1"
},
{
type: "Baz",
name: "baz1",
url: "/baz1"
},
]
我在那里看到一个集合,以及不同类型的不同模型。
现在让我们看看 SearchCollection,我认为你不能像你在例子中展示的那样使用 model
属性,所以假设所有的模型都有一个共同的模型父Result
:
window.SearchEntities = Backbone.Collection.extend({
url: '/get_search_results'
model: Result
});
从这里我们可以简单地做到这一点,如果没有真正的需要,则不要创建 Result 的子类:
window.Result = Backbone.Model.extend({
initialize: function(){
this.url = this.get( "url" );
}
});
您已完成:
var searchEntities = new window.SearchEntities();
searchEntities.fetch();
// ... wait for the fetch ends
searchEntities.at(0).get( "type" ); //=> "Foo"
我仍然不感到舒适,原因有两个:
- 我看不清楚你为什么要玩
Result.url
. - 您的模型
ids
在哪里?这对Backbone非常重要。
相关文章:
- 用程序搜索JQuery数据表中的文本
- 在VanillaJS中模拟模型双向数据绑定
- 在html Select中添加搜索
- Ajax Live搜索发布到Laravel视图
- 谷歌放置API:按国家或餐馆名称搜索餐馆
- 学生搜索项目jquery/javascript
- 用于搜索的聚合物嵌套绑定
- 在javascript中搜索具有重复值的两个数组中的匹配值
- 为集合分配大量的模型弹药
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- 如何使用backbone.js从集合中获取模型名称
- 骨干搜索多个模型
- 在集合中搜索具有类似属性和搜索参数的模型
- 如何通过ng模型搜索html中的文本
- 如何通过某些属性搜索并返回knockout视图模型的元素
- store.filter()不像预期的那样工作ember.js(试图搜索模型)
- AngularJs:从非常大的搜索表单传递搜索条件到service - create自定义模型
- 搜索过滤器不适用于具有公共模型的多个字段
- 您可以使用猫鼬中的实例方法搜索其他模型吗?
- 具有与字符串匹配的属性的模型的主干搜索集合