渲染的html页面无法正常工作

时间:2014-10-13 06:35:20

标签: javascript html backbone.js requirejs underscore.js

我正在使用Backbonejs框架。在这个框架下,我创建了一个app.js,它使用Backbonejs,requirejs,underscore和text.js 我想将一个html页面加载到div上。控制台显示已加载html页面,但我无法在屏幕上看到该特定页面。

以下是app.js

define(function (require) {

    // "use strict";

    var $ = require('jquery'),
        underscore = require('assets/js/underscore'),
        Backbone = require('assets/js/backbone'),
        tpl = require('text!Views/home.html'),

        template = _.template(tpl);

    return Backbone.View.extend({
        render: function () {
            el: '#banner',
            this.$el.html(template());
            return this;    
        }
    });
});

我想将home.html加载到主屏幕(index.html)。我在index.html中调用了这个app.js.控制台显示以下XHR已完成加载:GET" file:/// D:/Project1/Views/home.html" 但我的index.html页面并未显示此home.html

1 个答案:

答案 0 :(得分:1)

代码存在许多问题。

  1. 需要实例化Backbone View
  2. el需要在渲染功能之外定义
  3. 需要手动或从初始化函数(在创建View的实例时调用)中调用render函数。
  4. 整体结构写得不好,但我没有纠正,因为它超出了这个问题的范围。
  5. 检查这个小提琴:http://jsfiddle.net/rahulsv/c4dveax9/

    var tpl = "<div>hello world</div>";
    var template = _.template(tpl);
    (function(){
        var View = Backbone.View.extend({
            el: '#banner',
            initialize: function(){
                this.render();
            },
            render: function () {
                this.$el.html(template());
            }
        });
        var v = new View();
    })();
    

    希望它有所帮助。

    <强>更新

    要使用requireJs从文件访问模板(因为您正在使用它),您可以按如下方式进行:

    模板文件:

    <!-- pod.html -->
    <h2><%= title %></h2>
    <p><%= body %></p>
    

    从JS访问模板:

    // view.js
    define(["text!templates/pod.html"], function(pod) {
      var View = Backbone.View.extend({
        template: _.template(pod)
      });
    });
    

    点击此链接以获取参考:http://kilon.org/blog/2012/11/3-tips-for-writing-better-backbone-views/