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+,那么这种方法肯定会有问题。