具有服务器端渲染 HTML 片段的骨干模型

2024-03-14

我想开始使用 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(使用前将#替换为@)

具有服务器端渲染 HTML 片段的骨干模型 的相关文章

随机推荐