javascript - Backbone.js开发中看到的案例疑惑?
大家讲道理
大家讲道理 2017-04-10 16:54:03
[JavaScript讨论组]
render: function() {
    var e = this;
    //厉遍的方式渲染页面
    $.each(this.model.get("data"),
    function(t, n) {
        e.renderModule(n.type, n.content)
    });
}

renderModule: function(e, t) {
    var n = require("components/modules/" + e + "/view"),
    r = $('<p class="modules-' + e + '"></p>');//怎么插入的,p直接内容怎么插入有点不理解
    $(".view-inner", this.$el).append(r);
    var i = new n({
        model: t
    });
    r.html(i.$el);//这个地方不理解 主要是怎么插入的
    i.render();
}

生成的html

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
怪我咯

这案例写的真挫,还把 r 暴露成全局变量了。

实际上 Backbone 的每个 View 都应该实现一个 render 函数用以渲染视图。楼主对 renderModule 的疑问其实应该和 DOM 渲染有关系,并且这案例并没有完全按照 Backbone 的精神去实现。

首先,r 应该代表的是 root,即是模块的容器,这个容器在随后的源码 $(".view-inner", this.$el).append(r); 中被插入到了 .view-inner 这个元素中。

实际对 r 内容的渲染被放在了后面,r.html(i.$el);i.render()

对于这样的示例,我只能说,谁写的,过来,我帮他加个 buff

迷茫
new View().render(data);//他将渲染html代码,没有放在dom中;
new View().render(data).$el;//只是把代码渲染在dom中;

还有事件只在dom存在时才可以绑定,如果View中出现$('img.lazy').lazyload();请修改为this.$('img.lazy').lazyload();还有种办法

var view = new View();
view.$el;
view.render(data);
//这个时候是可以用$('img.lazy').lazyload();因为你先渲染在dom中
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号