如何在Backbone.js中刷新页面更改的异步视图?

时间:2012-06-20 11:55:58

标签: javascript backbone.js

我有一个应用程序只在$(document).ready中加载一次数据。集合视图和模型视图之间存在链接。视图具有异步体系结构,因此它们在页面刷新时呈现。但是,当我点击链接时,没有任何渲染,因为已经获取了数据并且没有触发任何事件。是否有允许处理这两种情况的插件或技巧?

Backbone.Collection.prototype.lazyLoad = function (id) {
    var model = this.get(id);
    if (model === undefined) {
        model = new this.model({ id: id });
        this.add(model);
        model.fetch();
    }
    return model;
}

var Col = Backbone.Collection.extend({
    model: Model,
});

var Model = Backbone.Model.extend({});

var ColView = Backbone.View.extend({
    ...
    initialize: function () {
        this.collection.on('reset', this.render);
    }
});

var ModelView = Backbone.View.extend({
    ...
    initialize: function () {
        this.model.on('change', this.render);
    }
});

var AppRouter = Backbone.Router.extend({
    routes: {
        "": "colView",
        "col/:id": "modelView"
    },

    colView: function () {
        new ColView(collection: col);
    }

    modelView: function (id) {
        new modelView(model: col.lazyLoad('modelId'));
    }
});

$(document).ready(function () {
    col = new Col;
    col.fetch();
    app = new AppRouter();
});

1 个答案:

答案 0 :(得分:1)

根据我的理解,您希望它呈现并显示视图,但由于已经提取col,因此不会触发您绑定到change的{​​{1}}事件渲染事件。那么你总是可以自己调用ModelView的渲染。

ModelView's