javascript - Backbone.js: View 未渲染

标签 javascript backbone.js

我有一个非常基本的主干 View ,我正在尝试渲染,但由于某种原因,屏幕上没有显示任何内容。代码是:

var UserList = Backbone.View.extend({
    tagName: 'ul',
    id: 'user-list',
    initialize: function () {
        _.bindAll(this, 'render');
    },
    render: function () {
        console.log(this.$el.html());  // LOG #1
        this.$el.html('<li>Is this showing up?</li>');
        console.log(this.$el.html());  // LOG #2

    }
});

var userList = new UserList();
userList.render();

第一次我记录el的内容时,它什么也没显示,第二次它有正确的内容,但屏幕上没有显示任何内容。谁能想到为什么会发生这种情况?我知道渲染函数正在触发,并且 this 已正确绑定(bind)到 this.render。另外,this.$el 设置为有效的 jQuery 对象(在我的 HTML 中定义)。

最佳答案

由于您没有在 View 上指定el,因此它不会附加到任何地方的 DOM。您需要明确附加它:

var userList = new UserList();
$("body").html(userList.render());

并且还从 render 返回一个值:

render: function () {
    console.log(this.$el.html());  // LOG #1
    this.$el.html('<li>Is this showing up?</li>');
    console.log(this.$el.html());  // LOG #2
    return this.$el;
}

Fiddle

关于javascript - Backbone.js: View 未渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22108370/

相关文章:

javascript - 动态创建的元素上的事件绑定(bind)?

jquery - Backbone.js、下划线.js : template images preloading

javascript - Backbone.js 将子变量持久化到父级

javascript - 在 Backbone View 中处理图像错误事件

javascript - 正则表达式是一项昂贵的操作吗?至少看起来

javascript - AWS Lambda 持续时间与函数运行时间

javascript - Jquery 改变表上一行的类

backbone.js - Handlebars 自定义助手 - 迁移到 Webpack

javascript - 如何在angularJS列表中添加项目?

javascript - AS3 导航ToURL();使用 jQuery 时,javascript 函数不会触发