将数据存储在模型&集合呼叫&取来
Storing Data in Model & Call from Collection & Fetch
收集
define([
'jquery',
'underscore',
'backbone'
], function($, _, Backbone){
console.log("Loaded");
var Jobs = Backbone.Collection.extend({
url: function () {
return 'http://domain.com/api/jobs?page='+this.page+''
},
page: 1
});
return Jobs;
});
型号
define([
'underscore',
'backbone'
], function(_, Backbone){
var JobFilterModel = Backbone.Model.extend({
defaults: {
T: '1',
PT: '1',
C: '1',
I: '1'
}
});
// Return the model for the module
return JobFilterModel;
});
在我的一个观点中,我设置了模型
var jobListFilterModelUpdate = new JobListFilterModel();
jobListFilterModelUpdate.set({value:isChecked});
我正在尝试从Collection中检索MODEL,这样我就可以发送带有URL的正确QUERY。
问题1
如何从集合中检索模型
问题2
我的Fetch在控制器(列表)视图中,我用更新了过滤器的模型
var jobListFilterModelUpdate = new JobListFilterModel();
jobListFilterModelUpdate.set({value:isChecked});
现在,模型已经更新,使用新的数据集而不是旧的默认值。的。我想问的是,如果我管理从模型中检索数据(更新的数据),数据是否仍然是我从控制器(列表)视图中设置的数据(至少对于这个"会话")
这将是一个漫长的答复。请耐心等待。
问题1
如何从集合中检索模型
您首先需要更新您的收藏定义如下:
var Jobs = Backbone.Collection.extend({
model: JobFilterModel, /*This was missing before.*/
url: function () {
return 'http://domain.com/api/jobs?page='+this.page+''
},
page: 1
});
之后,您可以从以下集合对象中获取模型:
var job = jobs.get(110);
在上面的代码中,110是您想要的模型的id。到目前为止,您应该清楚地看到,所有模型都应该有一个由服务器在其发送的JSON响应中设置的id属性。
问题2
检索到的集合是否为具有数据i集的更新模型视图中?
一个系列成为一个模型意味着什么?苹果不可能是苹果树,反之亦然。让我说这个问题是一个矛盾修辞法,然后试着回答困扰你的真正问题。
您可以从服务器获取模型的一个实例,也可以使用集合的一个对象获取一大堆实例。当您使用集合对象获取模型时,服务器返回的数据将被解析并存储在集合的models属性中。您可以调用collection.models
来获取模型的原始数组,但首选方法是使用collection.get
。
另一方面,当您在客户端创建模型时,它是一个空对象。您可以使用set()
为其添加属性。但这个模型对象仍然是短暂的,当你把页面留在浏览器中时,它就会消失。要持久化其数据,需要调用save()
方法。save()
使用sync()
将数据持久化到您想要的任何数据存储中。默认情况下,它会将您的数据POST回服务器。通过覆盖sync()
的默认行为,您将能够根据需要将数据保存到localStorage。
最后一件事是,在客户端创建的模型实例默认情况下不会成为集合的一部分。您需要使用集合对象的add()
方法将该模型添加到现有集合中。
更新以回答评论中的问题:
我更新了问题2,我不明白110是模型,我的模型不发送或接收任何json。我的控制器有。
是的,控制器必须将您的模型编码为json,然后将其发回。您必须确保返回的json具有一个具有一定值的id属性。有一种方法可以自定义将使用哪个属性作为标识,但我们还不了解。
而且,如果我在调用URL之后获取,我就不能将值传递到URL中:(
好吧,我不清楚。你必须进一步澄清。
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- jquery点击函数select&取消选择
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- Meteor-将选定窗体中的对象添加到集合中
- Angular js-返回一个包含类似
- 一点javascript元编程&可链接的设置器
- 主干集合重置和解析
- 使用数据上的角度更改设置集合的第一个元素的动画
- 为集合分配大量的模型弹药
- 如何使用backbone.js从集合中获取模型名称
- Lodash从集合创建集合
- 通过JSON&比较时间
- Jquery模板,如果xx&&如果yy
- jQuery工具验证器自定义效果-添加&消除影响
- Twitter引导程序Typeahead-Id&标签
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- AngularJS&JSON-从Previous&下一个对象
- Meteor:Tracker.autorun/observerChanges&集合未按预期工作
- Expressjs&集合中的MongoDB更新对象's数组
- 将数据存储在模型&集合呼叫&取来