2015-06-20 4 views
0

Я пытаюсь использовать функцию момента(). Format() внутри моего базового шаблона, как показано ниже.moment.js не может использоваться в базовом шаблоне

<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: Я загружаю moment.js через запрос js в моем модуле просмотра.

+0

Шаблон, который вы используете, вероятно, имеет <% %> как свой собственный синтаксис. Какой шаблон вы используете? Вы можете получить конкретный результат момента в вашем view.js, а затем передать этот результат в свой шаблон. – user1801879

ответ

1

Как говорит Роман, момент.js не входит в область визуализации шаблона. Но, Marionette упрощает его использование. Для этого вы можете использовать templateHelpers. Как это:

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

templateHelpers сделает его свойство moment доступны в шаблоне в качестве переменной с именем moment. Вы не меняете вещь в самом шаблоне.

+0

Это работало для вас? – seebiscuit

0

Я предполагаю, что из-за require.js момент.js доступен только для вашего просмотра. У вас есть несколько вариантов:

  1. Назначают его в окно (например, window.moment = требуется («момент»)), так что он будет доступен по всему миру.
  2. Не используйте его в шаблонах, а скорее используйте логику с меньшим количеством шаблонов и выполняйте манипуляции с данными в другом месте.
  3. Используйте рули в качестве механизма шаблонов и добавьте момент в качестве глобального помощника.
  4. Используйте марионетку и укажите момент. Js, используя шаблон Helpers.
+0

Я изменяю свою стратегию обработки форматирования даты. Думая о предоставлении модельных методов, которые форматируют значение даты, и вызывают их по представлению. –

+0

Имея доступ к шаблону, модель разрушает инкапсуляцию и однонаправленный поток данных, что сделает обслуживание более проблематичным в будущем. Я предлагаю придерживаться переопределения serializeData и использования templateHelpers. – Roman

Смежные вопросы