我正在构建一个简单的表指令。如果未在选项中传递,我需要使用默认宽度扩展列。
目前,我将选项复制并扩展到新的列数组,这样我就可以避免设置一次列,然后再重置它们,从而导致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;
答案 0 :(得分:0)
如果你在编译指令时挂钩pre函数,你就可以在指令init之前得到dom。
compile: function(tElem, tAttrs){
return {
pre: function($scope, $elm, $attrs, ctrl){
... code here ...
}
}
}