如何将参数传递给 Collection 解析? backbone.js
How to pass a parameter to Collection parse? backbone.js
如何通过 parse/fetch 函数传递参数?
我想在较低的 Initialize-part.
中传递变量 VARIABLE_PARAMETER
否则我必须写三个几乎相同的集合。
谢谢你的帮助。
app.js
//--------------
// Collections
//--------------
DiagnoseApp.Collections.Param1_itemS = Backbone.Collection.extend({
model: DiagnoseApp.Models.Param1_item,
url: 'TestInterface.xml',
parse: function (data) {
var parsed = [];
$(data).find(/*VARIABLE_PARAMETER*/).find('PARAMETER').each(function (index) {
var v_number = $(this).attr('Number');
var v_Desc_D = $(this).attr('Desc_D');
parsed.push({ data_type: v_data_type, number: v_number, Desc_D: v_Desc_D});
});
return parsed;
},
fetch: function (options) {
options = options || {};
options.dataType = "xml";
return Backbone.Collection.prototype.fetch.call(this, options);
}
});
这是我初始化应用程序的方式:
//--------------
// Initialize
//--------------
var VARIABLE_PARAMETER = "OFFLINE";
var offline_Collection = new DiagnoseApp.Collections.Param1_itemS();
var offline_Collection_View = new DiagnoseApp.Views.Param1_itemS({collection: offline_Collection});
//VARIABLE_PARAMETER has to be passed here in fetch I guess ??
offline_Collection.fetch({
success: function() {
console.log("JSON file load was successful", offline_Collection);
offline_Collection_View.render();
},
error: function(){
console.log('There was some error in loading and processing the JSON file');
}
});
不确定我是否理解您的问题,但是如果您希望 "pass a parameter" 从 fetch
到 parse
,并且如果该参数值对于给定的集合没有改变,您可以将其存储在集合中。您可以将参数传递给 fetch
作为 options
中的附加 属性:
fetch: function (options) {
options = options || {};
options.dataType = "xml";
this.variableParameter = options.variableParameter;
return Backbone.Collection.prototype.fetch.call(this, options);
},
然后简单地检索它
parse: function (data) {
// do something useful with this.variableParameter
// ...
}
fetch
方法接受一个 option
参数:http://backbonejs.org/#Collection-fetch
parse
方法也接受一个 option
参数:http://backbonejs.org/#Collection-parse
这些对象实际上是相同的。所以你可以写:
parse: function (data, options) {
var parsed = [];
$(data).find(options.variableParameter).find('PARAMETER').each(function (index) {
var v_number = $(this).attr('Number');
var v_Desc_D = $(this).attr('Desc_D');
parsed.push({ data_type: v_data_type, number: v_number, Desc_D: v_Desc_D});
});
return parsed;
},
如何通过 parse/fetch 函数传递参数? 我想在较低的 Initialize-part.
中传递变量 VARIABLE_PARAMETER否则我必须写三个几乎相同的集合。
谢谢你的帮助。
app.js
//--------------
// Collections
//--------------
DiagnoseApp.Collections.Param1_itemS = Backbone.Collection.extend({
model: DiagnoseApp.Models.Param1_item,
url: 'TestInterface.xml',
parse: function (data) {
var parsed = [];
$(data).find(/*VARIABLE_PARAMETER*/).find('PARAMETER').each(function (index) {
var v_number = $(this).attr('Number');
var v_Desc_D = $(this).attr('Desc_D');
parsed.push({ data_type: v_data_type, number: v_number, Desc_D: v_Desc_D});
});
return parsed;
},
fetch: function (options) {
options = options || {};
options.dataType = "xml";
return Backbone.Collection.prototype.fetch.call(this, options);
}
});
这是我初始化应用程序的方式:
//--------------
// Initialize
//--------------
var VARIABLE_PARAMETER = "OFFLINE";
var offline_Collection = new DiagnoseApp.Collections.Param1_itemS();
var offline_Collection_View = new DiagnoseApp.Views.Param1_itemS({collection: offline_Collection});
//VARIABLE_PARAMETER has to be passed here in fetch I guess ??
offline_Collection.fetch({
success: function() {
console.log("JSON file load was successful", offline_Collection);
offline_Collection_View.render();
},
error: function(){
console.log('There was some error in loading and processing the JSON file');
}
});
不确定我是否理解您的问题,但是如果您希望 "pass a parameter" 从 fetch
到 parse
,并且如果该参数值对于给定的集合没有改变,您可以将其存储在集合中。您可以将参数传递给 fetch
作为 options
中的附加 属性:
fetch: function (options) {
options = options || {};
options.dataType = "xml";
this.variableParameter = options.variableParameter;
return Backbone.Collection.prototype.fetch.call(this, options);
},
然后简单地检索它
parse: function (data) {
// do something useful with this.variableParameter
// ...
}
fetch
方法接受一个 option
参数:http://backbonejs.org/#Collection-fetch
parse
方法也接受一个 option
参数:http://backbonejs.org/#Collection-parse
这些对象实际上是相同的。所以你可以写:
parse: function (data, options) {
var parsed = [];
$(data).find(options.variableParameter).find('PARAMETER').each(function (index) {
var v_number = $(this).attr('Number');
var v_Desc_D = $(this).attr('Desc_D');
parsed.push({ data_type: v_data_type, number: v_number, Desc_D: v_Desc_D});
});
return parsed;
},