moment.js 无法在 backbone 模板中使用

moment.js unable to use in backbone template

我正在尝试 moment.js 在我的 backbone 模板中运行 moment().format() 函数,如下所示。

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

没用。它给出了一个错误

Uncaught ReferenceError: moment is not defined

但它在我的视图模块中有效。例如,如果我调用 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。

我猜是因为 require.js,moment.js 仅供您查看。 您有几个选择:

  1. 将它分配给 window(例如 window.moment = require('moment')),这样它就可以全局访问了。
  2. 不要在模板中使用它,而是使用无逻辑模板并在别处进行数据操作。
  3. 使用 handlebars 作为模板引擎并添加 moment 作为全局助手
  4. 使用 marionette 并使用 templateHelpers 提供 moment.js。

正如 Roman 所说,moment.js 不在呈现的模板范围内。但是,Marionette 可以很容易地把它放在范围内。为此,您可以使用 templateHelpers。像这样:

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

templateHelpers 将使其 moment 属性 在您的模板中作为名为 moment 的变量可用。您不会更改模板本身的任何内容。