Javascript 将变量链接到对象属性
在名为controllers.js的文件中,我有以下变量:Javascript 将变量链接到对象属性,javascript,express,Javascript,Express,在名为controllers.js的文件中,我有以下变量: var indexCtrl = require('./index'), offerCtrl = require('./offer'), setLocaleCtrl = require('./setLocale'), specificationsCtrl = require('./specifications'); 这个目标是: var routes = {
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。所以我无法访问控制器,我想是的。