我对骨干很新,我试图在我的项目中集成骨干。我有一个很大的JSON
文件,已在项目中使用过。我的views
将主要由JSON
文件中的数据驱动。
示例JSON看起来像这样。
{
"Cases": [
{
"x": "Cat",
"y": 12,
}
],
"Summary": [
{
"date" : "18/06/2014",
"data" :{
"ALL" : [
"Items" : 0
],
"Cat" : [
"Items" : 10
]
}
}
]
}
我的收藏品看起来像这样,我想在JSON
中使用的是 Summary
define(['jquery', 'underscore', 'backbone'], function($, _, Backbone) {
var DataModel = Backbone.Model.extend({});
var DataCollection = Backbone.Collection.extend({
model : DataModel,
url : 'path/to/my/data.json',
parse : function(response, xhr) {
// I only want the Summary returned
console.log(response.Summary); // Prints exactly what I need
return response.Summary;
}
});
return DataCollection;
});
我的观点看起来像这样
define(['jquery', 'underscore', 'backbone', '../../collections/DataCollection'], function($, _, Backbone, DataCollection) {
var AppVIew = Backbone.View.extend({
initialize : function() {
var myData = new DataCollection();
console.log(myData.fetch({}) );
}
});
return AppVIew;
});
当我尝试打印所提取的内容时,我得到以下内容以及来自服务器的响应,以及" responseText"键入整个JSON而不是response.Summary
Object { readyState=1, setRequestHeader=function(), getAllResponseHeaders=function(), more...}
有人可以帮我解决如何解决我的这个问题。遇到了similar issue,但没有帮助。
任何帮助/建议将不胜感激,更进一步。
答案 0 :(得分:0)
fetch
返回一个XHR对象。您应该检查集合的数据,而不是fetch
调用的返回值。
myData.fetch({
success: function(collection, response, options) {
console.log(collection.models);
}
});
答案 1 :(得分:0)
行。 当骨干调用Fetch函数时,它从后面使用Jquery(ajax),这意味着fetch是Async。要接收获取申请的结果,您可以这样做。
coffeescript代码。 //在你的模特里面 result = @fetch()
Fetch返回jqXHR(很高兴了解您的请求),在这里您可以找到一些信息,如请求的状态代码等。
但是如果你想在请求之后知道模型/集合的属性,你需要监听在主干完成获取请求后将触发的事件。
//Inside your model
getResult:->
@fetch(
success:=>
@trigger "success"
error:=>
@trigger "error"
)
//Inside your view
@model = new Model()
@model.getResult()
@model.on "succees", @doSomethingForSuccess, @
@model.on "error", @doSomethingForError, @
doSomethingForSuccess:->
//implementation
doSomethingForError:->
// implementation
现在,您可以使用服务器内容填充模型。如果您尝试在#34; doSomethingForSuccess"中进行console.log功能,您将看到内容信息。
Backbone在与服务器通信时有一些默认触发事件。 看看官方文档。 http://backbonejs.org/#Events