AngularJS中的相对templateUrl指令

时间:2016-01-18 23:41:13

标签: javascript angularjs url

我的指令看起来像这样:

angular.module('customDirectives', [])
.directive('searchResult', function() {
    return {
        templateUrl: 'app/directives/templates/searchResult.html',
        replace: true,
        scope: {
            itemObject: "=",
            itemById: "&"
        }
    }
});

它有效,但我希望有一个像" templates / searchResult.html"的模板。因为模板文件夹就在我的指令文件旁边。但似乎我需要根据我的index.html文件的位置给出模板的位置...无论如何都要将templateUrl更改为" templates / searchResult.html"?

1 个答案:

答案 0 :(得分:0)

我想我有一个解决方法。如果您确定,您将所有指令放在一个位置,只需使用角度常量来存储根文件夹URL。为此,首先在app模块中添加一个常量,例如:

angular.module('app', ['customDirectives'])
    .constant('appConfig', {
         directivesRoot: 'app/directives/'
     });

然后,在你的指令中,注入appConfig并像这样使用它:

angular.module('customDirectives', [])
.directive('searchResult', ['appConfig', function(appConfig) {
    return {
        templateUrl: appConfig.directivesRoot + 'templates/searchResult.html',
        replace: true,
        scope: {
            itemObject: "=",
            itemById: "&"
        }
    }
}]);

如果要在另一个项目中使用指令,则只需要更改directivesRoot url。