我想开始使用 Backbone.js 来更好地构建我的 JavaScript 文件。但是,我不想重做我的应用程序以通过 API 仅输出 JSON。如果我错了,请纠正我,但到目前为止,我的印象是即使没有 JSON API,我仍然可以使用 Backbone.js。现在我遇到了一个问题,我的服务器返回 HTML,而 Backbone 模型不喜欢这样并返回错误。
基本上,我想根据类别加载 HTML 片段:
var Filter = Backbone.Model.extend({
url: '/filters/',
});
var FilterView = Backbone.View.extend({
initialize: function() {
this.model.on('change', this.updateFilter, this);
this.changeFilter();
},
changeFilter: function() {
this.model.fetch({data: $.param({category: this.options.category})});
},
updateFilter: function(filters) {
console.log(filters);
this.$el.html(filters);
},
});
var filter = new Filter();
var filterView = new FilterView({
el: $( '#filterContainer' ),
category: $( '#categorySlug' ).data( 'slug' ),
model: filter,
});
现在我想我可以使用这个简单的模型通过 Ajax 检索我的 HTML 片段。请求正确触发,但 Backbone 返回错误并且updateFilter
从来没有被叫过。
难道我没有得到什么吗?我需要更改什么才能使其与 HTML 而不是 JSON 响应一起使用?或者我根本不应该使用模型?
您需要扩展您的 Backbone 模型以覆盖 fetch,以便与答案一样lost https://stackoverflow.com/a/17307199/1675您需要将数据类型传递给 Backbone.Sync
fetch: function(options) {
return Backbone.Model.prototype.fetch.call(this, _.extend({ dataType: "html"}, options));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)