gpt4 book ai didi

angularjs - 具有特定类型的通用指令(UI 组件继承)

转载 作者:行者123 更新时间:2023-12-02 23:10:51 24 4
gpt4 key购买 nike

我正在开发一个项目,以特殊的 XML 作为输入来呈现 HTML。我已经成功地完成了基本案例。例如:

<mybutton name="layla"></mybutton>

转换为

<div class="btn">Layla</div>

使用类似指令

.directive('mybutton', function() {
return {
restrict: 'E',
scope: {
name: '@'
},
templateUrl: 'uicomponents/uiButton.html'
}
})

我将收到的真实 XML 输入是:

<ui type="back_button" x="10.0" y="630.0"/>

我想避免更改 XML 语法,但如果需要的话可以这样做。所有屏幕组件都在 <ui></ui> 中标签。 type属性定义组件。

你会如何为这种标签编写指令?为 <ui> 创建一个巨大的指令似乎并不明智。元素并在属性内部有一个长的 switch-case。

最佳答案

您可以创建一个 ui 指令,根据 type 属性转换元素,然后重新编译该元素 - 如下所示:

app.directive('ui',function($compile){
return {
restrict:'E',
compile:function(tElement,tAttrs){
if(tAttrs.type){
tElement.attr(tAttrs.type,'');
tElement.removeAttr('type');
return function(scope,el){
$compile(el)(scope);
}
}

}
}
});


app.directive('backButton',function(){
return {
replace:true,
template:'<button ng-click="btnClick()">A back-button template</button>'
}
});

编辑:在我最初的示例中,我犯了编译模板元素的错误 - 如果该指令在 ngRepeat 中使用,则这将不起作用。修复方法很简单,只需编译链接元素即可。我已经更新了代码和示例。

查看this plnkr example .

关于angularjs - 具有特定类型的通用指令(UI 组件继承),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15929386/

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