如何有条件地动态地将AngularJS指令添加到元素?

时间:2014-07-30 11:08:31

标签: javascript html angularjs web angularjs-directive

所以我无法真正实现这一点,我有以下代码

HTML:

<!doctype html>
<html ng-app="plunker" >
<head>
  <meta charset="utf-8">
  <title>AngularJS Plunker</title>
  <link rel="stylesheet" href="style.css">
  <script>document.write("<base href=\"" + document.location + "\" />");</script>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js"></script>
  <script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
  {{vt.t}} 
  <div my-directive="{{vt.t}}"></div>
  {{vt.f}}
  <div my-directive="{{vt.f}}"></div>

  <hr />

  {{vt.t}} 
  <div ng-class="{'my-directive': vt.t}"></div>
  {{vt.f}}
  <div ng-class="{'my-directive': vt.f}"></div>

  <hr />

  <div class="my-directive"></div>
  <div class="nodirectiveclass"></div>

</body>
</html>

JavaScript的:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.vt = { t: true, f: false };
});

app.directive('myDirective', function($compile) {
  return {
    restrict: 'AC',
    template: '<div>Directive on</div>',
    replace: true
  };
});

Plunker:http://plnkr.co/edit/7cJKhIuNqnsk1CkczjoE?p=preview

如您所见,动态添加时类不会触发指令,但在我上一个“静态”示例中工作正常。我也尝试将directive属性设置为true或false,但这似乎没有帮助。

1 个答案:

答案 0 :(得分:0)

我认为你应该在你的指令中使用模型变量。然后,您可以轻松访问您想要的价值。

参考此答案: AngularJS - Create a directive that uses ng-model