如何根据范围值以角度删除这些属性

时间:2015-06-23 14:45:34

标签: angularjs angularjs-scope

如果scope.foo === false,如何删除这些属性?

<div layout="row" layout-align="space-around center">

我想在html代码中执行此操作,而不是在我的指令中。

总而言之,我希望我的应用

<div layout="row" layout-align="space-around center">
some content
</div>

<div >
some content
</div>

4 个答案:

答案 0 :(得分:1)

看看ng-attr

E.g ng-attr-layout="{{myValue}}
在你的控制器中,像$scope.myValue = "row"

答案 1 :(得分:1)

您可以尝试这样的事情:

<div ng-init="foo=true">
  <div ng-attr-layout="{{foo?'':undefined}}row" ng-attr-layout-align="{{foo?'':undefined}}space-around center">Hello</div>
  <button ng-click="foo=!foo">Toggle</button>
</div>

这将切换layoutlayout-aligndiv属性的显示。

工作原理:

foo中的scope属性为false后,ng-attr-XXX内的表达式值为undefined,表示ng-attr-XXX不会添加XXX属性到定义了ng-attr-XXX的元素。

<强> Plunker

http://plnkr.co/edit/2Z2uZYBVt7D3ECjcLpGO?p=preview

答案 2 :(得分:0)

这个怎么样?

<div layout="{{(scope.foo === false)?'':'space-around center'}}" layout-align="{{(scope.foo === false)?'':'row'}}">

你到底想要做什么? @SuperUberDuper

答案 3 :(得分:0)

<div ng-hide="foo === false" layout="row" layout-align="space-around center">

OR

<div ng-hide="getHidden(foo)" layout="row" layout-align="space-around center">

.controller("name", ['$scope', function($scope){
 $scope.getHidden = function(foo){
      return foo === false;
 }
}]);