在一个遗留项目中,我想创建一个使用 transclude 的新指令。
指令代码的精简版本是:
app.directive('controlWrap', function() {
return {
restrict: 'E',
transclude: true,
scope: { label: "@" },
templateUrl: "control-wrap-template.html"
}
})
模板是:
<div>
<label>{{label}}</label>
<div>
<ng-transclude></ng-transclude>
</div>
</div>
该指令是这样使用的
<control-wrap label="Just a example">
<input type="text" ng-model="input" />
</control-wrap>
Test: {{input}}
我知道解决方法是在范围内使用对象而不是原始值(ng-model 内 ng-transclude)。但这对我来说是没有选择的。这是一个丑陋的、编码不良的遗留代码,直接依赖于作用域上的这些属性。
我可以在指令中做些什么来使 html 无需更改即可工作吗?