JavaScript:在另一个属性中使用对象的属性?

问题描述:

在我咕噜构建脚本我有持有我的大部分路径,像这样的对象:JavaScript:在另一个属性中使用对象的属性?

var project_config = { 
    project_paths: { 
     build: 'assets/css', 
     docs: 'docs', 
     src_scss: 'src/scss/**/*.scss', 
     yaml: grunt.file.readYAML('docs/config.yml') 
    } 
}; 

正如你所看到的,docs可以再次在“YAML”中找到,因为它只是一个路径。

如何在yaml中使用docs

做它像这样没有工作,可能是因为该对象不能访问自己:

使用咕噜的模板也没有工作:yaml: grunt.file.readYAML('<%= project_paths.docs %>/config.yml')

+0

你尝试''/config.yml''?假设'project_config'是grunt配置对象。 – 2014-09-13 17:57:07

+0

@FelixKling Woops是的!对不起,这只是我的问题中的一个错字。现在将编辑。 – Sven 2014-09-13 17:58:35

+0

文字*中的JavaScript属性不能直接在所述文字内使用*。 (使用延迟评估的形式并不算作“直接”;有可能一些特别的东西与咕噜,否则这就是问题的答案。) – user2864740 2014-09-13 18:00:01

在您需要的时刻要访问路径,Grunt尚未处理配置对象。您可以处理模板字符串 “手动” 与grunt.template.process

var project_config = { 
    project_paths: { 
     build: 'assets/css', 
     docs: 'docs', 
     src_scss: 'src/scss/**/*.scss' 
    } 
}; 
project_config.project_paths.yaml = grunt.file.readYAML(
    grunt.template.process(
     '<%= project_paths.docs %>/config.yml', 
     {data: project_config} 
    ) 
); 
+0

谢谢,没有找到这个功能! – Sven 2014-09-13 18:58:52