就像标题所说,我正在尝试制作一个包装其父级的属性指令,并允许我在编辑和显示实际模型值之间切换。
简而言之:
<input ng-model="model" allow-edit="editing" />
最终看起来像:
<div>
<div ng-hide="editing">{{model}}</div>
<input ng-show="editing" ng-model="model"></input>
</div>
如果一切顺利的话。
然而,我继续得到更多的内容:
<input ng-model="model">
<!-- html from allow-edit directive's template --!>
</input>
我在这里使用输入作为示例,但我希望能够包装任意内容(选择等)......
有没有人能够制作一个包含同一元素的其他内容的指令?有没有更好的方法来做到这一点我不考虑?
感谢您的帮助!
答案 0 :(得分:2)
我希望这能回答你的问题:
在指令选项中:
replace: true
transclude: "element"
ng-transclude
您想要将原始元素放在包装器模板中。var app = angular.module("test", []);
app.directive("myCustomInput", function($rootScope){
return{
restrict: "A",
replace: true,
transclude: "element",
template: "<div class='input-wrap'>"+
"<div ng-transclude></div>"+
"<i class='glyphicon glyphicon-chevron-down'></i>"+
"</div>"
}
});
<input my-custom-input type="text" />
答案 1 :(得分:1)
您要做的是replace:true
,但保留"=ngModel"
replace:true,
scope:{
mymodel:"=ngModel",
editing:"=allowEdit"
}
继承人Plunker
答案 2 :(得分:0)
我认为使用replace : true
可以让您替换原始内容。看看这个StackOverflow答案:
Here
如果您有更多的指令,我可以继续使用它,但希望您可以使用其他答案的plnkr来解决它。