将代码从HTML移动到Angular中的Directive

时间:2015-03-05 22:42:55

标签: angularjs

我有以下角度代码来计算比率并“选择”表格行中的某个级别:

  <form>
    <input type="text" data-ng-model="N" />
    <input type="text" data-ng-model="D" />
    <p class="value" data-ng-show="!!(!!N && !!D && D != 0)">{{ N/D | number: 1 }}</p>
  </form>

  <table>
    <tr>
      <td data-ng-class="{'active': N/D < 0.5}">Low</td>
    </tr>
    <tr>
      <td data-ng-class="{'active': N/D >= 0.5">High</td>
    </tr>
  <table>

在这个例子中,我使用的是N / D,但实际上计算时间稍长......

是否可以创建指令以从HTML中删除所有逻辑?

我认为指令可能比这种情况下的控制器更好,不是吗?

1 个答案:

答案 0 :(得分:0)

当然,您可以使用函数并在指令中编写此函数,而不是内联表达式。

例如,HTML可以是:

data-ng-show="isShown()"

在你的指令中:

// you can also use controller instead of link
link: function(scope) {
  scope.isShown = function() {
    var D = scope.D;
    var N = scope.N;
    return !!(!!N && !!D && D != 0);
  }
}