我有这个结构
<aspect aspect="aspect" aspectid="props.getId(aspect)">
<simpleproperty property="property"></simpleproperty>
<uriproperty property="property"></uriproperty>
</aspect>
Aspect指令(方面模板已定义ng-translude)
.directive("aspect",["$compile","$http",function ($compile,$http) {
return {
restrict: "E",
transclude:true,
scope:{
aspect:"="
},
link: function (scope, element, attr) {
var templateUrl = //if(scope.isURL) "one.html" else "two.html"
if(!_.isUndefined(templateUrl)){
$http.get(templateUrl, {cache: $templateCache})
.success(function (html) {
element.replaceWith($compile(html)(scope));
});
}
}
};
}]);
以类似的方式定义了儿童指令。
.directive("simpleproperty",["$compile","$http",function ($compile,$http) {
return {
restrict: "E",
transclude:true,
scope:{
aspect:"="
},
link: function (scope, element, attr) {
scope.props=Props;
var templateUrl = //if(scope.isURL) "one.html" else "two.html"
if(!_.isUndefined(templateUrl)){
$http.get(templateUrl, {cache: $templateCache})
.success(function (html) {
element.replaceWith($compile(html)(scope));
});
}
}
};
}]);
我的要求是基于使用范围对象的一些业务逻辑基本上加载父和子的指令模板。但它根本不起作用。我在Stack溢出中读到,我不能使用templateUrl来动态加载模板,这就是我删除它并使用$ compile的原因。
注意:如果我只保留在儿童指令中动态加载模板,它只能正常工作但反之不然或两者兼而有之。
请帮助!!!