与服务器端渲染HTML片段骨干模型 [英] Backbone model with server-side rendered HTML snippet

查看:94
本文介绍了与服务器端渲染HTML片段骨干模型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要开始使用Backbone.js的更好地构建我的JavaScript文件。不过,我不希望重做我的应用程序通过一个API来OUPUT只是JSON。纠正我,如果我错了,但到目前为止,我有IM pression,我仍然可以使用Backbone.js的,即使没有JSON API。现在我遇到了我的地方服务器返回的HTML和骨干模型不喜欢并且返回一个错误的问题。

I want to start using Backbone.js to better structure my JavaScript files. However, I don't want to redo my application to ouput just JSON via an API. Correct my if I'm wrong, but so far I have the impression that I can still use Backbone.js, even without a JSON API. Now I'm running into a problem where my server returns HTML and the Backbone model doesn't like that and returns an error.

基本上,我想这取决于类别加载HTML片段:

Basically, I want to load an HTML snippet depending on a category:

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代码段。请求火灾正确,但骨干返回一个错误和 updateFilter 是从来没有得到所谓的。

Now I thought that I can use this simple model to retrieve my HTML snippet via Ajax. The request fires correctly, but Backbone returns an error and updateFilter is never getting called.

难道我没有得到的东西吗?我需要做什么改变,使其与HTML,而不是一个JSON响应工作?或者不应该使用一个模型呢?

Am I not getting something? What do I need to change to make it work with HTML instead of a JSON response? Or shouldn't I use a model at all?

推荐答案

您需要扩展您的骨干机型覆盖取因此与从的失去你需要传递一个数据类型为Backbone.Sync

You need to extend your Backbone model to override fetch so that as with the answer from lost you need to pass a datatype to Backbone.Sync

fetch: function(options) {
    return Backbone.Model.prototype.fetch.call(this, _.extend({ dataType: "html"}, options));
}

这篇关于与服务器端渲染HTML片段骨干模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆