javascript - Backbone.js Jade 和循环模型

标签 javascript node.js backbone.js pug underscore.js

我对使用带有 jade/underscore 的 backbone 模板感到有点困惑。

我有一个主干模型,里面有几个数组,我不确定如何渲染数组属性。我可以将它们移动到一个单独的主干集合和 View 中,但在这种情况下这似乎有点过分了。

我关注了this blog post on using backbone with jade并将以下内容添加到我的 Backbone 文件中

   _.templateSettings = {
      interpolate : /\{\{(.+?)\}\}/g
   };

它允许我在这个庄园中渲染模型属性:

      //in my JavaScript
      this.template = _.template($("#some-template").html());

      //in my .jade template
      input.text(type='text', name="name", value='{{name}}')

我想解决的是如何对模型中的数组之一进行简单循环。例如

    - for (var child in children)
        {{child}}

但我对正确的语法很困惑,jade 开始的地方和下划线接管等等。谢谢。

最佳答案

你不能在浏览器中使用 jade(嗯,从技术上讲你可能可以,但与 backbone 一起使用而不是下划线并不常见)。您将在那里使用下划线模板。 The docs on _.template表明您可以评估 javascript 并使用 _.each 方法循环遍历模型的数组属性。

它最终会在您 View 的 render 中看起来像这样功能。为了提高效率,您需要将模板函数缓存为 View 的一个属性,但为了简单起见,我将其内联。例如,假设您有一个 Car包含 drivers 列表的模型作为驱动程序名称的数组。

var template = "<% _.each(model.drivers, function(name) { %> <li><%= name %></li> <% }); %>";
return _.template(template, this);

请注意,您需要提供 evaluate模板设置中的语法,因为此示例包括模板标记的插值样式 ( <%= ) 和求值样式 ( <% )。目前,您只有 mustache 样式插值,这还不够。

关于javascript - Backbone.js Jade 和循环模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6883787/

相关文章:

javascript 函数 inArray

json - Windows上带有utf8编码文件的node.js readfile错误

node.js - 将查询条件传递给生成查询字符串的 Node.js/Mongodb 中的 db.collection.find

javascript - async/await 返回 Promise { <pending> }

javascript - 关于 Backbone.js 与 Handlebars.js 的问题

javascript - 如何将浏览器化节点模块集成到 brunch 构建的应用程序中?

javascript - 将参数链接到 JS 库

JavaScript;在页面加载时调用函数

javascript - 如何通过单击菜单中的 Li 将 HTML 页面加载到 DIV 中?

ruby-on-rails-3 - 如何使用phonegap和devise完成登录(Rails)