0

我的视图中有一个使用 Backbone.js 呈现的跨度

我想在渲染后立即获取它的 HTML

就像是 :$(span).html()

我怎样才能做到这一点?

4

2 回答 2

1

这个问题让我有点困惑,因为 Backbone.View 实际上根本没有render方法(好吧,从技术上讲它确实有,但它是无操作的);它是 100% 用户定义的。鉴于这一事实,检查......好吧,渲染后的任何事情都像......好吧,在渲染后检查它。

换句话说,如果您的视图的渲染方法是:

var YourView= Backbone.View.extend({
    render: function() {
        this.$el.html(someHtml);
    }
});

那么你需要做的就是:

var YourView= Backbone.View.extend({
    render: function() {
        this.$el.html(someHtml);
        console.log(this.$el.html()); // check rendered HTML
    }
});

如果您想通过事件进行中间处理(如@aerodynamo 建议的那样):

var YourView= Backbone.View.extend({
    events: {'customPostRender': 'postRender'},
    postRender: function() {
        console.log(this.$el.html()); // check rendered HTML
    },
    render: function() {
        this.$el.html(someHtml);
        this.trigger('customPostRender');
    }
});

但实际上这甚至没有必要。

于 2013-01-23T22:46:44.470 回答
0

不确定MutationObserver是否有帮助,但绝对值得一试:-)

于 2013-01-23T23:40:05.950 回答