F.e。对于html元素我可以做$.after()
,我想做一些像指令。
现在我有代码
HTML
<input ng-model="job.position" ng-class="{inputError: job.errors.position}" ng-change="job.errors.position=false">
<errortooltip error="job.errors.position">
...
<script type="text/ng-template" id="error-tooltip.tpl">
<div class="inputTooltipError" ng-show="error">
<div class="inputTooltipErrorText">
{{ error }}
</div>
</div>
</script>
JS
.directive('errortooltip', function() {
return {
restrict: 'E',
scope: {
error: '=error'
},
templateUrl: 'error-tooltip.tpl'
};
但是我希望简化它并将errortooltip
仅添加到将替换ng-class
,ng-change
和自定义指令的输入中,并在输入后添加一块模板
<input ng-model="job.position" errortooltip="job.errors.position">
答案 0 :(得分:0)
最简单的答案是将指令更改为属性指令,其模板看起来与您想要的一样。然后,您只需replace
现有输入,模板中正确设置的输入也会在其后面显示工具提示。
所以你的最终HTML看起来就像你描述的那样(尽管你可以将job.position
和job.errors.position
压缩成一个job
param)
<input ng-model="job.position" errortooltip="job.errors.position">
//or
<input errortooltip="job">
然后将您的指令更改为包含所需模板的属性指令。如果我使用单job
个参数,它可能看起来像
directive('errortooltip', function() {
return {
restrict: 'A',
replace: true,
scope: {
job = '=errortooltip'
},
templateUrl: 'error-tooltip-input.tpl'
};
,您的新模板error-tooltip-input.tpl
将是
<input ng-model="job.position" ng-class="{inputError: job.errors.position}" ng-change="job.errors.position=false">
<errortooltippopup error="job.errors.position">
其中errortooltippopup
是一个与现有error-tooltip.tpl
具有相同模板的指令。