首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ng-hide隐藏属性

用ng-hide隐藏属性
EN

Stack Overflow用户
提问于 2015-02-03 22:00:39
回答 1查看 2.3K关注 0票数 2

我使用一个输入字段值属性来显示用户在我的应用程序的SERP中输入的查询。我想隐藏在未定义结果的页面上查询的值。是否可以使用ng-show来隐藏一个属性,而不是整个元素?

玉石

代码语言:javascript
复制
    div(ng-controller="SearchCtrl", class="header-search-form")
      form(id="search-form-homepage" class="input-group input-lg")
        input(type="search",
        ng-enter="doSearch(query.term)",
        ng-hide="query.term === 'undefined'",
        ng-model="query.term",
        class="form-control header-search-result",
        value="#{data.query}")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-03 23:09:43

您必须为此任务创建自己的指令。作为一个示例- plnkr,我创建了一个将删除占位符属性的指令。

注意这里的关键区别在于我们不能“隐藏”属性,因为隐藏实际上是

代码语言:javascript
复制
display: 0; 

我们只需移除或添加它们。

代码语言:javascript
复制
app.directive('attrHide', function(){
  return {
    restrict: 'A',
    scope: {
      attrHide: '='
    },
    link: function(scope, elm, attr){
      var targetAttr = attr.hiddenAttribute;
      var saveAttr = attr[targetAttr] || '';

      scope.$watch('attrHide', function(newVal){
        if (newVal){
          elm.removeAttr(targetAttr);
        } else {
          elm.attr(targetAttr,saveAttr);
        }
      })
    }
  }
})

在您可以拥有的标记中

代码语言:javascript
复制
<input  ng-model="target"/>
<input placeholder="hello" hidden-attribute="placeholder" attr-hide="target=='hello'"/>

在这里,在attr-hide中,您可以放置真正的false表达式,而在隐藏属性中,您可以选择要删除的属性。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28309566

复制
相关文章

相似问题

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