Угловой JS Templating

0

У меня есть шаблон для всех моих страниц просмотра, которые я загружаю с помощью

app.route('/*').get(core.renderIndex);

где и функция renderIndex выглядит так:

exports.renderIndex = function (req, res) {
  res.render('modules/core/server/views/index', {
    user: req.user || null
  });
};

Теперь, когда у моего маршрута есть объявление, я рисую другой шаблон, а не index.server.view.html

app.route('/:shopId/:locationId/announcement/*').get(core.renderAnnouncement);  

exports.renderAnnouncement = function (req, res) {    
  res.render('modules/core/server/views/announcement', {
    user: req.user || null,
  });
};

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

Мой вопрос в том, как я могу получить доступ к переменным в файле server.view.html?

<!DOCTYPE html>
<html lang="en" ng-controller="OfferController"  ng-init="getAnnouncement()">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1">
  <base href="/">
  <title>{{ gettitle }}</title>

как gettitle, который устанавливается из метода getAnnouncement OfferController.

Это работает, если я устанавливаю другой файл announcement.client.view.html и в файле сервера его расширяет

Теги:
angularjs-scope
meanjs

1 ответ

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

Если кто-то застрял и нуждается в помощи, вот как я это сделал

 app.get('/:shopId/:locationId/announcement/*',function(req,res,next){
    async.waterfall([
      function (done) {
        var resultsObj = '';  
        var httpTransport = 'http://';
        if (config.secure && config.secure.ssl === true) {
          httpTransport = 'https://';
        } 
        var url = httpTransport + req.headers.host+'/api/offer/getbyid/'+req.params[0];
        request.get(url, function (err, res, body) {
          resultsObj = JSON.parse(body);
          done(err, resultsObj);
        });


      },
      function (resultsObj, done) {
        var httpTransport = 'http://';

        if (config.secure && config.secure.ssl === true) {
          httpTransport = 'https://';
        } 
        var url = httpTransport + req.headers.host+'/api/shops/'+req.params.shopId+'/'+req.params.locationId;   
        request.get(url, function (err, res, body) {
          var resultsObjNew='';     
          resultsObjNew = JSON.parse(body);
          done(err, resultsObjNew,resultsObj);
        });

      },
      function (resultsObjNew,resultsObj, done) {

        res.render('modules/core/server/views/announcement', {
          title: resultsObj[0].title,
          imageUrl  : resultsObj[0].imageURL,
          desc : resultsObj[0].desc,
          link:resultsObj[0].redirectLink,
          logoLink: resultsObjNew.logoLink,   
          backgroundImage:resultsObjNew.backgroundImage    
        });   
      }    
    ]);
  });

где

  var request = require('request'); 
  var async = require('async'); 
  var path = require('path');    

Ещё вопросы

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