javascript - 具有服务器端呈现的 HTML 片段的主干模型

标签 javascript html json backbone.js

我想开始使用 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/

相关文章:

jquery - JSON 和 jqGrid。 "userdata"是什么?

javascript - 将查询从 react 前端传递到羽毛服务是好的做法吗?

html - 将 CSS 存储在 mysql 数据库中

html - 如何强制 span 元素保留在可变长度文本和图像元素之间?

ios - AFJSONRequestOperation 不更新 block 外的内容

javascript - 如何在js代码中获取json值?

javascript - 使用 ScrollMagic 为序列中的多个场景设置动画

javascript - 使用 jQuery 保留文本框值

javascript - 如何将参数传递给从 XMLHttpRequest 返回的 CanvasJS?

html - onChange 文本框值未使用 React 以 HTML 形式更新