主干.js将 url 参数传递给集合
Backbone.js passing url parameter to collection
我正在使用测试.json文件并且可以控制台.log成功时url很好,但是我现在正在尝试将参数附加到url并且它们被忽略了。
这是视图的样子,工作正常,并且显示带有测试 json 文件的成功消息:
busImportSearch: function() {
importSelect.fetch({
data: {
importPhone: '5555555555',
busImportName: 'test business',
busImportCID: '12345',
busImportBID: '1234567890'
},
success: function(results) {
// url console.log's fine just no params
}
});
}
这是我在集合中的内容:
var importSelect = Backbone.Collection.extend({
model: importModel,
url:'somepath/test.json',
sync: function(method, model, options) {
options.timeout = 10000;
options.dataType = "json";
return Backbone.sync(method, model, options);
},
parse: function(response) {
console.log(this.url);
if (typeof response.data !== 'undefined') {
this.result = response.data.list;
}
return this.result;
},
});
return new importSelect;
});
编辑
我认为这是有效的,但我认为有更好的方法可以做到这一点:
url: function() {
var busimportPhone = $("#busImportPhone").val();
var busImportName = $("#busImportName").val();
var busImportCID = $("#busImportCID").val();
var busImportBID = $("#busImportBID").val();
var updateUrl = 'test.json' + '?importPhone=' + busimportPhone + '&importName=' + busImportName + '&importCID=' + busImportCID + '&importBID' + busImportBID; return updateUrl;
},
这并没有好很多,但是您可以将集合上的属性列表存储在某个位置,并从那里创建URL。例如。
importSelect.myDataList = {
importPhone: '5555555555',
busImportName: 'test business',
busImportCID: '12345',
busImportBID: '1234567890'
};
importSelect.fetch({ ... });
并使用类似(代码未测试)的函数构造您的网址
function constructUrl(data) {
var result = "";
var count = 0;
for(var i in data) {
var prefix = "&";
if(count == 0) {
prefix = "?";
}
result += prefix + i + "=" + data[i];
}
return result;
}
并使用函数创建网址
...
url: function() {
return constructUrl(this.data);
}
希望有帮助。
我认为通过定义url
函数,您走在正确的道路上,只需从集合中获取这些查询参数,而不是直接从页面中获取即可。 集合应该能够知道加载了哪种项,因此以某种方式将查询参数与集合实例一起存储是有意义的。 过去,我在集合定义中使用过对象。 但要小心,否则最终可能会得到一个由所有这些集合实例共享的对象。
旁注:我之前一直想进行设置,以便对于可以通过各种查询参数查询生成的任何集合,都会存在一个仅对查询参数进行建模的关联模型。 通过模型和集合之间的事件绑定,更改模型的值可以自动触发集合中的提取。 但这会是一个合理的触发因素吗?我不确定。
相关文章:
- 函数未将值作为参数传递
- 如何将参数传递到angularJs中的工厂
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- JavaScript常量-作为参数传递或直接使用
- 如何将javascript对象作为参数传递到c#web服务中
- 将参数传递给函数
- 如何将Gruntfile.js中的参数传递到webdriverio规范
- javascript,将参数传递给函数内部的闭包中的回调
- Javascript-将包含变量的html字符串作为参数传递
- 将字符串作为参数传递给函数onclick event jquery
- 将修改后的数组作为参数传递给函数
- 在嵌套递归指令中将参数传递给父控制器方法
- each()-将额外的参数传递给回调参数
- 代码气味-将布尔控制参数传递给函数
- 如何将自定义参数传递到FullCalendar事件提要
- 将参数传递给函数,同时保留事件处理程序
- 将图标作为参数传递不会;t工作-谷歌地图
- 主干.js将 url 参数传递给集合
- 将参数传递给流星反应表中的集合
- 如何将参数传递给集合视图服务器调用