Угловая Константа - MEANJS

0

Изменить: ошибка в коде исправлена.

Я использую стек MEANJS, который по умолчанию поставляется с файлом default.js с некоторой информацией, как показано ниже:

module.exports = {
  app: {
    title: 'My App Title',
    description: 'My apps description',
    keywords: 'some keywords',
    googleAnalyticsTrackingID: process.env.GOOGLE_ANALYTICS_TRACKING_ID || 'GOOGLE_ANALYTICS_TRACKING_ID',
  }
};

который появляется в шаблоне приложений через движок шаблонов swig. Например:

<title>{{title}}</title> 

печатает:

<title>My App Title</title>

Изменение этого значения также работает так, как ожидалось.

Если, однако, я добавляю свою собственную переменную, она ее не распознает, поэтому:

module.exports = {
  app: {
    title: 'My App Title',
    description: 'My apps description',
    keywords: 'some keywords',
    googleAnalyticsTrackingID: process.env.GOOGLE_ANALYTICS_TRACKING_ID || 'GOOGLE_ANALYTICS_TRACKING_ID',
    new_title: 'My Apps New Title',
  }
};

а затем измените представление на:

<title>{{new_title}}</title> 

печатает:

<title></title>

Эти переменные зарегистрированы/переданы где-то еще, что я пропустил?

  • 0
    Вы можете очистить кэш и попробовать еще раз?
Теги:
meanjs

2 ответа

1
Лучший ответ

Переменная не распознается, потому что, несмотря на то, что она определена в вашем файле конфигурации, вы должны установить ее в объекте экспресс-локалей.

Если вы используете файл конфигурации express.js, расположенный в /config/lib/, вы можете найти этот блок кода:

/**
 * Initialize local variables
 */
module.exports.initLocalVariables = function (app) {
    // Setting application local variables
    app.locals.title = config.app.title;
    app.locals.description = config.app.description;
    if (config.secure && config.secure.ssl === true) {
        app.locals.secure = config.secure.ssl;
    }
    app.locals.keywords = config.app.keywords;
    app.locals.googleAnalyticsTrackingID = config.app.googleAnalyticsTrackingID;
    app.locals.facebookAppId = config.facebook.clientID;
    app.locals.jsFiles = config.files.client.js;
    app.locals.cssFiles = config.files.client.css;
    app.locals.livereload = config.livereload;
    app.locals.logo = config.logo;
    app.locals.favicon = config.favicon;
    ...
};

Вот где это происходит. Чтобы ваша переменная конфигурации была доступна для использования в шаблонах приложений, просто добавьте строку:

app.locals.new_title= config.app.new_title;

Для получения дополнительной информации о объекте экспресс-приложений, вы можете проверить официальную экспресс-документацию здесь.

1

Это объект JSON. Вы использовали = вместо : в своем коде.

module.exports = {
  app: {
    title: 'My App Title',
    description: 'My apps description',
    keywords: 'some keywords',
    googleAnalyticsTrackingID: process.env.GOOGLE_ANALYTICS_TRACKING_ID || 'GOOGLE_ANALYTICS_TRACKING_ID',
    new_title : 'My Apps New Title' //Here
  }
};
  • 0
    Моя ошибка, код на самом деле делает new_title: «My Apps New Title»; отредактировал оригинальный вопрос.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню