2012-04-19 35 views
0

我正在使用通过结合backbone.js和underscore.js创建html位的常规方式。这是我使用的一个例子Backbone.js和underscore.js创建凌乱的html

_.template($('#html-container').html(), this.model.toJSON()); 

而且我在需要的地方追加这个。这种情况下的模型是一个正常的骨干模型。

现在,这将OUPUTS HTML看起来像这样:

<li _id="4f82f7c3c5de997ad3fd4989" code="61131" unit="100ml" op="11" rp="22" cp="0" id="4f82f7c3c5de997ad3fd4989"> 

基本上,它在我的模型会为每个变量HTML属性。这是正常的还是我在这里做错了事。

+0

什么是你的#html-container外观喜欢? – sdolan 2012-04-19 23:37:29

+0

只是'<%= code %>'。并且视图的tagName是'li',所以我想要的只是''不是'

  • 61131
  • ' – 2012-04-19 23:39:58

    回答

    0

    某处你应该有这样的一条线。

    var sometemplate = _.template($('#html-container').html()); 
    

    ,编译模板变成一个功能,你可以通过你的模型数据和生成html,像这样:

    var html = sometemplate(this.model.toJSON()); 
    

    你试图做这一切在同一行..你 可以做(但不是这种方式),但最好编译一次模板,保存对某处的引用,稍后再引用它。

    又见http://documentcloud.github.com/underscore/#template

    编辑:现在,我没有看到,我看到

    如果你正在写一个一次性的,你可以传递数据对象作为 第二参数传递给模板以便立即渲染,而不是返回模板函数 。

    所以没关系。所以,也许当你的JSONable对象生成时(也就是说,你的对象内有一个对象或某物),你可能包含多个latyer数据,或者...

    +0

    这并不能解决我遇到的问题,只是轻微的优化。无论哪种方式,我都会得到相同的结果。在我的项目中,我使用两种方式。我在一行中做了这个问题,使问题缩短了一点。 – 2012-04-20 00:00:34

    +0

    是的,我的不好,让我们看看那个对象看起来像是由'this.model.toJSON()'返回的。 – JayC 2012-04-20 00:03:09

    +0

    这也不是问题。即使我从模型中提取键/值对,并仅将它们用作数据对象“{code:...,op:...}”,但仍然会获得相同的HTML。 – 2012-04-20 00:05:54