AngularJS在编译之前扩展默认选项

时间:2015-05-21 16:26:48

标签: javascript angularjs

我正在构建一个简单的表指令。如果未在选项中传递,我需要使用默认宽度扩展列。

目前,我将选项复制并扩展到新的列数组,这样我就可以避免设置一次列,然后再重置它们,从而导致2个摘要。

是否有理想的方法将这些扩展到现有的预编译对象上,避免双重摘要命中?



class DataTable {
  constructor($scope){
    var ColumnDefaults = { width: 50 };
    $scope.columns = $scope.options.columns.map((c) => {
      return angular.extend(angular.copy(ColumnDefaults), c);
    });

  }
}

function Directive(){
  return {
    restrict: 'E',
    controller: 'DataTable',
    scope: {
      options: '=',
      values: '=',
      onSelect: '&'
    },
    controllerAs: 'dt',
    template: 
      `<div class="dt material">
        <dt-header columns="columns"></dt-header>
        <dt-body values="values" columns="columns"></dt-body>
        <dt-footer></dt-footer>
      </div>`,
    link: function($scope, $elm, $attrs){
      //console.log($scope.options)
    }
  };
};
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

如果你在编译指令时挂钩pre函数,你就可以在指令init之前得到dom。

compile: function(tElem, tAttrs){
  return {
    pre: function($scope, $elm, $attrs, ctrl){
      ... code here ...
    }
  }
}