gpt4 book ai didi

angularjs - AngularJS 中的嵌套和开槽 Transclude

转载 作者:行者123 更新时间:2023-12-04 21:35:44 25 4
gpt4 key购买 nike

我有一个元素,它的整个内容可以被嵌入。嵌入是可选的,所以我可以让它的内部部分保留,但内部元素被嵌入。让我们看看它的实际效果:

    <h4 class="modal-title" ng-transclude="title">
Are you sure you want to remove this <span ng-transclude="innerType">good</span>
</h4>

在指令定义中,我有:
    myApp.directive('confirmDeleteModal',function(){
return {
restrict:'E',
transclude: {
title:'?modalTitle',
innerType:'?modalType',
},
templateUrl:'templates/confirm_delete_modal.html',
scope: {
obj:'=info',
},
}
});

HTML 代码如下:
  <confirm-delete-modal info="goodToBeDeleted">
<modal-type>good</modal-type>
</confirm-delete-modal>

当我运行我的代码时,出现以下错误: [ngTransclude:orphan] .

我该怎么办?
我正在使用 AngularJS v1.5.8

最佳答案

您在模态标题的后备内容中使用另一个指令 ng-transclude。但是 ng-transclude 成为跨度的“父级”并且不提供嵌入功能。我建议您修改指令并使用 isSlotFilled 方法来了解标题是否已填充:

directive('confirmDeleteModal',function(){
return {
restrict:'E',
transclude: {
title:'?modalTitle',
innerType:'?modalType',
},
link: function(scope, elem, attrs, ctrl, trfn) {
scope.titleFilled = trfn.isSlotFilled('title');
},
template:'<h4 class="modal-title" ng-transclude="title" ng-if="titleFilled"></h4>' +
'<h4 class="modal-title" ng-if="!titleFilled">Are you sure you want to remove this <span ng-transclude="innerType">good</span></h4>',
scope:{
obj:'=info',
}
}
})

( https://plnkr.co/edit/k0RXLWbOvHdNc9WFpslz?p=preview )

关于angularjs - AngularJS 中的嵌套和开槽 Transclude,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38890162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com