Backbone.js使用下划线在模板中显示JSON

时间:2013-09-20 20:29:51

标签: javascript jquery json backbone.js underscore.js

我对BackboneJs很陌生,而且我在那里迷路了,整天都在面对这个简单的问题而迷失。

我尝试创建一个离线运行的应用。所以我不使用任何模型或集合,以及.save,.fetch等奇怪的东西。 我只使用Backbone作为历史,结构和模板系统。

我的问题是。我有一些JSON,如何在模板中显示它?

  • 我的观点,一直在努力。我的json在jsonVar。

    window.ExposView = Backbone.View.extend({
        template:_.template($('#expos').html()),
        render:function (eventName) {
            console.log(jsonVar); // it's ok here
            $(this.el).html(this.template(),{"output":jsonVar});
            return this;
        }
    });
    
  • 我的模板(同时使用jQuery mobile),我希望我的Json能够在那里展示。

    <script type="text/tempate" id="expos">
        <div data-role="header" class="header">
            <a href="#" data-icon="back" class="back ui-btn-left">Back</a>
        </div>
        <div data-role="content" class="content">
            <%= output %>
        </div>
    </script>
    

错误:输出未定义 ..好

另一个问题。 如果任何奇迹我的模板收到我的json输出,我如何使用underscoreJs显示它?

谢谢你的时间, 祝周末愉快。

2 个答案:

答案 0 :(得分:1)

你非常接近。您只需要使用对象调用模板函数。

$(this.el).html(this.template({"output":jsonVar}));

答案 1 :(得分:0)

您的语法略有偏离 - 编译模板是您将JSON模型传递给的函数。像这样:

$(this.el).html(this.template({"output":jsonVar}));

您可以通过多种方式进行渲染,但我想您只想将标记添加到DOM中。尝试这样的事情:

var view = new ExposView();
$("body").append(view.render().el);

Fiddle