2

我正在开发一个模块化的角度应用程序,我在 angular-module-1 模块中定义了我的文件夹路径(常量:BASE_PATH:“path/to/folder”)。我想在位于我的应用程序的另一个模块(angular-module-2)中的角度组件中重新使用这个常量。我想在我的项目中多次使用这个常量。

module.component("relationshipSearch", {
templateUrl: BASE_PATH +'/link/to/other/folder',

女巫是将这个常量定义为在所有解决方案项目中可见的全局变量的最佳方法这是我的项目结构:

project
|-- angular-module-1
|   |-- angular-module-1.js
|   |-- angular-module-1.html
|-- angular-module-2
|   |-- angular-module-2.js
|   |-- angular-module-2.html
4

3 回答 3

6

我会说创建一个名为的通用模块angular-common,您可以在其中放置common诸如 common servicefactorydirectiveconstants等内容。

然后在模块内部添加常量angular-common(这将是完全独立且可插入的)模块。像下面

//assuming `angular-common` is already defined
angular.module('angular-common').constant('commmonSetting', {
  'BASE_PATH': '/link/to/other/folder'
})

接下来,将这个通用模块注入app(这是主模块,将在ng-app/中使用bootstrap),如下所示

angular.module('app', ['angular-common', 'ngRoute', ...other dependencies..])

当您想使用时,只需在/任何您想要的地方BASE_PATH注入commmonSetting依赖项。controllercomponent

app.component('myComponent', {
  templateUrl: function(commmonSetting){
    return commmonSetting.BASE_PATH +'/link/to/other/folder';
  },
  ....
})
于 2016-08-03T17:18:42.583 回答
3

抱歉,在旧线程上发布了一个接受的答案,但我想说接受的答案不是缩小安全的。写这个的最小化安全方法是:

app.component('myComponent', {
  templateUrl: function($injector){
    var commmonSetting = $injector.get('namespace.CommmonSetting');
    return commmonSetting.BASE_PATH +'/link/to/other/folder';
  },
  ....
});
于 2017-03-30T19:31:37.483 回答
0

也许不同的方法可能会有所帮助。与其设置路径,不如只查看同一目录中的文件。

您可以使用require(),例如:

template: require('./template-in-same-dir.html')

注意template不是templateUrl

于 2016-08-03T17:17:15.147 回答