Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将变量链接到对象属性_Javascript_Express - Fatal编程技术网

Javascript 将变量链接到对象属性

Javascript 将变量链接到对象属性,javascript,express,Javascript,Express,在名为controllers.js的文件中,我有以下变量: var indexCtrl = require('./index'), offerCtrl = require('./offer'), setLocaleCtrl = require('./setLocale'), specificationsCtrl = require('./specifications'); 这个目标是: var routes = {

在名为controllers.js的文件中,我有以下变量:

var indexCtrl           = require('./index'),
    offerCtrl           = require('./offer'),
    setLocaleCtrl       = require('./setLocale'),
    specificationsCtrl  = require('./specifications');
这个目标是:

var routes = {
    indexCtrl: {
        'fr-FR' : '/accueil',
        'en-EN' : '/home',
        'de-DE' : '/startseite'
    },
    offerCtrl: {
        'fr-FR' : '/offre',
        'en-EN' : '/offer',
        'de-DE' : '/angebot'
    },
    setLocaleCtrl: {
        'fr-FR' : '/setLocale/:locale',
        'en-EN' : '/setLocale/:locale',
        'de-DE' : '/setLocale/:locale'
    },
    specificationsCtrl: {
        'fr-FR' : '/specifications',
        'en-EN' : '/specifications-en',
        'de-DE' : '/spezifikationen'
    }
};
例如,所需的index.js:

'use strict';

var IndexModel = require('../models/index');

exports.route = function(req, res, locale) {
  console.log(locale);
  var model = new IndexModel();
  res.render('index', model);
};
如何使用var路由中定义的indexCtrl作为上面使用require定义的indexCtrl

编辑: 例如:

for (var ctrl in routes) {
    var ctrlContent = routes[ctrl];
    for (var language in ctrlContent) {
        var route = ctrlContent[language];
        //router.get(route, ctrl);
        console.log('%s, %s, %s', ctrl, language, route);
    }
}
日志显示:

indexCtrl, fr-FR, /accueil
indexCtrl, en-EN, /home
indexCtrl, de-DE, /startseite
offerCtrl, fr-FR, /offre
offerCtrl, en-EN, /offer
offerCtrl, de-DE, /angebot
setLocaleCtrl, fr-FR, /setLocale/:locale
setLocaleCtrl, en-EN, /setLocale/:locale
setLocaleCtrl, de-DE, /setLocale/:locale
specificationsCtrl, fr-FR, /specifications
specificationsCtrl, en-EN, /specifications-en
specificationsCtrl, de-DE, /spezifikationen

这样,我知道route/accureil必须由控制器indexCtrl在区域设置fr fr中呈现。但是如果我尝试使用require中定义的ctrl.route(例如indexCtrl.route),我会得到一个错误:route.get需要回调函数,但得到了一个[object Undefined]。

查看您的问题,这可能会起到以下作用:

var indexCtrl           = require(routes.indexCtrl[language]),
    offerCtrl           = require(routes.offerCtrl[language]),
    setLocaleCtrl       = require(routes.setLocaleCtrl[language]),
    specificationsCtrl  = require(routes.specificationsCtrl[language]);

例如,如何为变量指定对象属性的值?like var route=routes.indexCtrl?@tkone:事实上,我想用另一种方法,在属性中设置var.routes.indexCtrl[language]对应一个路由,而不是控制器=//例如accueil。所以我无法访问控制器,我想是的。