在模板中动态设置该宽度时,获取表格单元格的宽度

时间:2014-06-05 14:26:44

标签: javascript angularjs

好的......我有一个模板:

<th width="{{setWidth(1)}}%">{{deal}}</th>

我有一个指令:

.directive('tableheaders', function($window,$compile) {
    return function(scope) {
    var th = document.getElementsByTagName('th');

    for (var i = 0; i < th.length; i++) {       
        console.log(th[i].width); // returns "{{setWidth(1)}}%" need "100%"
    }

如何编译正在发送的宽度值,以便我可以使用它?

1 个答案:

答案 0 :(得分:0)

您可以使用$timeout或jqLit​​e函数ready()等待DOM准备就绪并且{{setWidth(1)}}%已经过评估。

使用$timeout

app.directive('tableheaders', function($timeout) {
  return function(scope) {
    $timeout(function () {
      var th = document.getElementsByTagName('th');

      for (var i = 0; i < th.length; i++) {
        console.log(th[i].width);
      }
    });
  };
});

使用ready

app.directive('tableheaders', function() {
  return function(scope, element) {
    element.ready(function () {
      var th = document.getElementsByTagName('th');

      for (var i = 0; i < th.length; i++) {
        console.log(th[i].width);
      }
    });
  };
});

或者您可以使用$interpolate手动执行评估:

app.directive('tableheaders', function($interpolate) {
  return function(scope, element) {

    var th = document.getElementsByTagName('th');

    for (var i = 0; i < th.length; i++) {

      var expression = $interpolate(th[i].width);
      var width = expression(scope);
      console.log(width);
    }
  };
});