目标:连续运行2个指令,第二个指令将由第一个指令输出确定
问题:动态执行。
我想制定一个核心指令:
<div field-directive="textbox" field-model="SomeModel"/>
在核心指令中我想使用模板返回类似的内容:
<div >
<div>
<div >
{{fieldModel.Title}}:
</div>
<div>
<div ng-model="fieldModel.Value" textbox />
</div>
</div>
</div>
问题我无法弄清楚如何在模板中写出属性field-directive
的值textbox
,我需要它,因为我希望在输出上运行另一个指令这个。
我的指示:
myapp.directive('fieldDirective', function()
{
replace : true,
scope : {
fieldModel: "=",
fieldDirective: "="
},
link: function (scope, element, attr) {
element.html(element.html().replace("field-directive", attr.fieldDirective));
}
template:
'<div ng-show="fieldModel.IsRelevant">\
<div>\
<div class="fieldTitle">\
{{fieldModel.Title}}:\
</div>\
<div>\
<div ng-model="fieldModel.Value" fieldDirective />\
</div>\
</div>\
</div>';
}
答案 0 :(得分:0)
仅针对其他人会遇到类似问题的情况: 我的解决方案是在链接函数上编写这些数据,然后使用类似的编译函数:
myapp.directive('fieldDirective',['$compile', function(compile)
{
return{
replace : true,
scope : {
fieldModel: "=",
fieldDirective: "="
},
link: function (scope, element, attr) {
var strTemplate =('<div ng-show="fieldModel.IsRelevant"><div><div class="fieldTitle">{{fieldModel.Title}}:</div><div><div ng-model="fieldModel.Value" placeHolder /></div></div></div>').replace("placeHolder", attr.fieldDirective);
var e = angular.element(strTemplate);
compile(e.contents())(scope);
element.replaceWith(e);
},
}
}]
);