Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs:是否可以使用嵌套dom作为组件';什么样的模板?_Angularjs - Fatal编程技术网

Angularjs:是否可以使用嵌套dom作为组件';什么样的模板?

Angularjs:是否可以使用嵌套dom作为组件';什么样的模板?,angularjs,Angularjs,我正在寻找一种方法来使用组件的现有圆顶节点作为模板。转换是最接近我的结局,但它仍然需要额外的包装元素 app.component('widgetDom', { controller: function ($scope) { $scope.data = "I'm data for nested dom elements"; } }); 然后将其显示为 <widget-dom>{{data}}</widget-dom> {{data} 但这行不通 通

我正在寻找一种方法来使用组件的现有圆顶节点作为模板。转换是最接近我的结局,但它仍然需要额外的包装元素

app.component('widgetDom', {
    controller: function ($scope) {
    $scope.data = "I'm data for nested dom elements";
  }
});
然后将其显示为

<widget-dom>{{data}}</widget-dom>
{{data}
但这行不通

通过转换,我最终会得到:

<widget-dom><div ng-transclude>{{data}}</div></widget-dom>
{{data}
有没有办法只使用嵌套的DOM元素作为组件/指令的模板

多谢各位


这是由于组件总是与其父组件有一个隔离的作用域。如果将“组件”定义为指令,则可以将指令配置为共享父级的范围,从而实现这一点

例如:

app.directive('widgetDom', function(){
  return {
    restrict: 'E',
    template: '<div>Hello, {{data}}!</div>'
  };
});
app.directive('widgetDom',function(){
返回{
限制:'E',
模板:“你好,{{data}}!”
};
});

您只能使用
模板
模板URL
。如果你想使用parentScope数据,你可以通过绑定发送它。不需要黑客。可以在指令
compile
函数中检索嵌套DOM,并使用$compile对当前范围进行编译。组件不应该以这种方式工作,如果您关心进一步升级到Angular 2+,那么这种方法肯定会有问题。