gpt4 book ai didi

angularjs - 如何为 ngInclude 设置父范围

转载 作者:行者123 更新时间:2023-12-03 08:24:00 27 4
gpt4 key购买 nike

我有一个指令,它的工作需要一个独立的范围它接收的参数之一是传递给 ng-include 的 templateUrl

有没有办法告诉 ng-include 将其范围生成为调用我的指令的父范围的子范围? (与 ng-transclude 发生的事情相同 - 除了我已经在内部使用 transclude,而且我需要一个额外的模板。

可以查看当前指令https://github.com/lee-elenbaas/angular-multiline-ellipsis如果 ellipsisUrl 将被嵌入,它将变得更有用

最佳答案

所以基本上,您想要的是从隔离范围中排除指令模板的一部分,并将其包含回父范围。

我会使用指令

.directive('excludeFromIsolated', function() {
return {
restrict: "E",
transclude: true,
link: function (scope, elm, attr, ctrl, $transclude) {
$transclude(scope.$parent), function(clone){
elm.replaceWith(clone);
});
}
}
})

在您的模板中用新指令包装包含 ngInclude 的元素:

+ '<exclude-from-isolated>'
+ '<span ng-include="ellipsis" ng-style="ellipsisStyle"></span>'
+ '</exclude-from-isolated>'

注意事项

  • 我考虑过使用 scope.$parent.$new() 但它毫无意义,因为 ngInclude 无论如何都会创建一个新的范围。
  • ngInlcude 已经在使用嵌入
  • Angular 不允许在同一元素上重复包含(除非你使用 $$tlb,你可能不应该乱用),所以我不得不用一个元素将它包裹起来。

关于angularjs - 如何为 ngInclude 设置父范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20992322/

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