这是我想要做的事情:
(function () {
'use strict';
var sampleApp = angular.module('sample');
sampleApp.directive('myDirective', sampleAppDirective);
function sampleAppDirective () {
sampleAppDirectiveController.$inject = ['$scope', '$http', '$attrs', '$element', '$compile', '$log'];
return {
restrict : 'EA',
controller : sampleAppDirectiveController,
templateUrl : 'partials/sample.html'
};
function sampleAppDirectiveController ($scope, $http, $attrs, $element, $compile, $log) {
$scope.placeholderDir = 'my-other-directive';
}
}})();
partials / sample.html中的模板如下所示
<div><div {{placeholderDir}}></div></div>
是否可以在myDirective contrroller
中将模板解析为类似的内容 <div><div my-other-directive></div></div>
我想确保my-other-directive在呈现时也解析为它的模板。
请帮忙!
答案 0 :(得分:2)
是的,但您需要查看$ compile服务。
基本上,您需要在指令中生成标记并使用$ compile服务进行编译。
您可以在链接功能中执行以下操作:
link: function($scope, $element) {
$compile($element.contents())($scope);
}
虽然没有测试过。
您也可以从DDO中丢弃templateUrl并直接在您的元素中插入标记:
link: function($scope, $element) {
$element.html('<div><div ' + $scope.placeholderDir + '></div></div>');
$compile($element.contents())($scope);
}