是否可以将服务注入 Angular 1.5 组件的 templateUrl 属性?
Is it possible to inject a service into Angular 1.5 component's templateUrl property?
我的指令需要一个常量 (MODULE_ROOT_URL) 来生成模板路径。使用指令语法,我可以将常量注入目录工厂函数。
如何将此指令转换为 Angular 1.5 组件?
是否可以将服务注入 Angular 1.5 组件?
谢谢。
更新:
我知道可以将服务注入组件控制器。
但是如何为组件的 templateUrl 注入服务 属性?
更新2:
请参阅 plnkr。我创建了指令和组件版本。
指令版本工作正常。但是组件版本有错误 [ngTransclude:orphan]
https://plnkr.co/edit/DMumuIpXJY6RDCX6XObz?p=preview
angular.module('AbcModule')
.directive('abcDirective', ['MODULE_ROOT_URL', function (MODULE_ROOT_URL) {
return {
restrict: 'E',
templateUrl: MODULE_ROOT_URL + 'abc/abc.tpl.html'
}
}]);
直到 Angular 1.4,directive
DDO 已经 return 通过功能,你可以在一个地方有依赖关系。但是在 Angular 1.5.3 中,我们可以有一个控件来在组件的 controller
中添加依赖项。您可以像下面那样使用 ng-include
并在控制器中注入依赖项来解决问题。
标记
angular.module('AbcModule')
.component('abcDirective', {
template: '<div ng-include="$ctrl.rootUrl ? $ctrl.rootUrl + \'abc/abc.tpl.html\': \'\'"></div>',
controller: function(MODULE_ROOT_URL) { //<--injected dependency here.
var self = this;
self.rootUrl = MODULE_ROOT_URL;
}
}]);
templateUrl
和 template
可以是函数,可以注入依赖项。
angular.module('AbcModule')
.component('abcDirective', {
restrict: 'E',
templateUrl: function(MODULE_ROOT_URL) {
return MODULE_ROOT_URL + 'abc/abc.tpl.html';
}
});
我的指令需要一个常量 (MODULE_ROOT_URL) 来生成模板路径。使用指令语法,我可以将常量注入目录工厂函数。 如何将此指令转换为 Angular 1.5 组件? 是否可以将服务注入 Angular 1.5 组件?
谢谢。
更新: 我知道可以将服务注入组件控制器。 但是如何为组件的 templateUrl 注入服务 属性?
更新2: 请参阅 plnkr。我创建了指令和组件版本。 指令版本工作正常。但是组件版本有错误 [ngTransclude:orphan]
https://plnkr.co/edit/DMumuIpXJY6RDCX6XObz?p=preview
angular.module('AbcModule')
.directive('abcDirective', ['MODULE_ROOT_URL', function (MODULE_ROOT_URL) {
return {
restrict: 'E',
templateUrl: MODULE_ROOT_URL + 'abc/abc.tpl.html'
}
}]);
直到 Angular 1.4,directive
DDO 已经 return 通过功能,你可以在一个地方有依赖关系。但是在 Angular 1.5.3 中,我们可以有一个控件来在组件的 controller
中添加依赖项。您可以像下面那样使用 ng-include
并在控制器中注入依赖项来解决问题。
标记
angular.module('AbcModule')
.component('abcDirective', {
template: '<div ng-include="$ctrl.rootUrl ? $ctrl.rootUrl + \'abc/abc.tpl.html\': \'\'"></div>',
controller: function(MODULE_ROOT_URL) { //<--injected dependency here.
var self = this;
self.rootUrl = MODULE_ROOT_URL;
}
}]);
templateUrl
和 template
可以是函数,可以注入依赖项。
angular.module('AbcModule')
.component('abcDirective', {
restrict: 'E',
templateUrl: function(MODULE_ROOT_URL) {
return MODULE_ROOT_URL + 'abc/abc.tpl.html';
}
});