moment.js无法在骨干模板中使用

时间:2015-06-20 12:55:01

标签: backbone.js marionette momentjs

我正在尝试使用我的主干模板中的moment.js函数moment()。format(),如下所示。

<td> 
  <% 
  var x = new Date(start); print(moment().format()) 
  %>
</td>

它没有用。它给出了一个错误

  

未捕获的ReferenceError:未定义时刻

但它在我的视图模块中有效。例如,如果我调用init函数,它会正确记录时刻时间值。

    initialize : function() {
        /* Listen to our collection for reset event */
        this.collection.on('reset', this.render, this);
        console.log("moment", moment().format());
    },

我在这里缺少什么..?

PS:我在视图模块中通过require js加载moment.js。

2 个答案:

答案 0 :(得分:1)

正如Roman所说,moment.js不在渲染模板的范围内。但是,Marionette很容易将其纳入范围。为此,您可以使用templateHelpers。像这样:

templateHelpers: {
   moment: moment // <-- this is the reference to the moment in your view
}

templateHelpers会将模板中的moment属性设置为名为moment的变量。你不能改变模板本身的东西。

答案 1 :(得分:0)

我猜测因为require.js,moment.js仅适用于您的视图。 您有几个选择:

  1. 将其分配给窗口(例如window.moment = require(&#39;时刻&#39;)),以便全局访问。
  2. 不要在模板中使用它,而是使用逻辑较少的模板并在其他地方进行数据操作。
  3. 使用把手作为模板引擎并添加时刻作为全球帮助者
  4. 使用marionette并使用templateHelpers提供moment.js.