首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Angular指令模板中有条件地添加数据属性

在Angular指令模板中有条件地添加数据属性
EN

Stack Overflow用户
提问于 2014-02-27 02:17:21
回答 2查看 92.1K关注 0票数 65

我正在编写一个指令的模板。如果作用域中的属性设置为true,则应将data-toggle="dropdown"附加到该元素。如果变量为false,则此数据属性不应呈现为元素的属性。

例如,如果作用域变量为true,则模板应呈现:

代码语言:javascript
复制
<span data-toggle="dropdown"></span>

如果为false,则模板应呈现:

代码语言:javascript
复制
<span></span>

要实现这一点,模板应该是什么样子的?

例如,我知道我可以使用ng-class来有条件地包含一个类。如果我想让模板呈现这个:

代码语言:javascript
复制
<span class="dropdown"></span>

那么我的模板应该是这样的:

代码语言:javascript
复制
"<span ng-class="{ 'dropdown': isDropDown }"></span>

如果作用域变量isDropDownfalse,那么模板将简单地呈现:

代码语言:javascript
复制
<span></span>

因此,在模板中有一种方法可以有条件地添加class="dropdown"。是否存在允许我有条件地添加data-toggle="dropdown"的模板语法

我尝试过的模板之一是:

代码语言:javascript
复制
"<span data-toggle="{ 'dropdown': isDropDown }"></span>

我对上面的模板的想法是,如果作用域变量isDropDown为真,则data-toggle的值将被设置为"dropdown“。如果isDropDown为false,则data-toggle的值将只是一个空字符串""。不过,这似乎并不管用。

EN

回答 2

Stack Overflow用户

发布于 2015-06-05 16:35:50

<span ng-attr-data-toggle="{{isTrue && 'dropdown' || undefined }}"></span>

将在isTrue=true:<span data-toggle="dropdown"></span>时生成

当isTrue=false:<span></span>

票数 41
EN

Stack Overflow用户

发布于 2014-02-27 03:41:02

目前,没有angular指令允许您有条件地删除或添加属性。您可以在span中执行ng-switch,一个使用该attr,另一个不使用该attr。

代码语言:javascript
复制
<div ng-switch on="condition">
<span data-toggle="dropdown" ng-switch-when="value"></span>
<span ng-switch-default></span>
</div>

代码语言:javascript
复制
<span data-toggle="dropdown" ng-if="expression"></span>
<span ng-if="!expression"></span>

您也可以为同样的目的创建一个指令(有条件地添加/删除attrs ),但这会有点复杂。

此外,如果您希望在指令中管理范围变量,则可以将其作为另一个属性进行传递。

示例:

代码语言:javascript
复制
<span data-toggle="dropdown" when="isDropDown"></span>
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22049824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档