![](/img/trans.png)
[英]Directive with ng-transclude wraps html in ng-transclude element
[英]angular directive with ng-transclude
我基於HTML <p>
標簽創建了一個非常簡單的段落指令。
angular.module('myApp').directive('paragraph', function() {
return {
restrict: 'E',
transclude: true,
controller: function() {
var vm = this;
vm.text = "Paragraph text from controller"
},
controllerAs: 'ParagraphViewModel',
template: '<p ng-transclude>{{ParagraphViewModel.text}}</p>'
}
});
我在我的html中使用該指令如下:
<paragraph>This is a very simple paragraph</paragraph>
<paragraph></paragraph>
我有一個輸入,我已將它綁定到ParagraphViewModel.text
。
<input type="text" ng-model="ParagraphViewModel.text">
問題是,當我更改輸入時,第二個<paragraph>
會按預期更改,但第一個值不會更改。
請檢查此JSBin以查看它的實際運行情況。
我想你在這里想要實現的是將你的指令傳遞給默認文本然后用綁定輸入來改變它。
您可以使用隔離范圍實現此目的。 這是你應該怎么做的:
在您的視圖中 :
<div ng-app="myApp">
<paragraph pgtext="Foo" pgmodel="bar"></paragraph>
<paragraph>{{bar}}</paragraph>
<input type="text" ng-model="bar">
</div>
在您的應用中 :
angular.module('myApp',[]);
angular.module('myApp').directive('paragraph', function() {
return {
restrict: 'E',
transclude: true,
scope: {
pgmodel: '=',
pgtext: '@'
},
template: '<p ng-transclude>{{pgmodel || pgtext}}</p>'
}
});
演示: JSBin
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.