我想开始使用 Backbone.js 来更好地构建我的 JavaScript 文件。但是,我不想重做我的应用程序以通过 API 仅输出 JSON。如果我错了,请纠正我,但到目前为止,我的印象是我仍然可以使用 Backbone.js,即使没有 JSON API。现在我遇到了一个问题,我的服务器返回 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 模型以覆盖获取,以便与来自 lost 的答案一样您需要将数据类型传递给 Backbone.Sync
fetch: function(options) {
return Backbone.Model.prototype.fetch.call(this, _.extend({ dataType: "html"}, options));
}
关于javascript - 具有服务器端呈现的 HTML 片段的主干模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12332287/