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 仅供您查看。
您有几个选择:
- 将它分配给 window(例如 window.moment = require('moment')),这样它就可以全局访问了。
- 不要在模板中使用它,而是使用无逻辑模板并在别处进行数据操作。
- 使用 handlebars 作为模板引擎并添加 moment 作为全局助手
- 使用 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
的变量可用。您不会更改模板本身的任何内容。
我正在尝试 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 仅供您查看。 您有几个选择:
- 将它分配给 window(例如 window.moment = require('moment')),这样它就可以全局访问了。
- 不要在模板中使用它,而是使用无逻辑模板并在别处进行数据操作。
- 使用 handlebars 作为模板引擎并添加 moment 作为全局助手
- 使用 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
的变量可用。您不会更改模板本身的任何内容。