디자인 요구 사항으로, 주어진 열의 모든 선택 요소가 가장 넓은 선택을 사용하여 동일한 너비인지 확인해야합니다 그 열에 그들을 설정합니다.테이블의 모든 선택 요소를 해당 열의 가장 넓은 요소와 동일한 너비로 설정하십시오.
예 :
의 폭은 동일한 열에서 그 외 일치하고 안 전체 테이블의 넓은 <select>
일치한다.
내가 (아래 참조) 작동합니다 것 같다 기능을 날조했지만,이 전에 페이지 데이터를 다시로드, 내가 스틱 상관없이 을 실행합니다.
함수 호출은 현재 getData
함수 끝에 ngTableParams
입니다.
$scope.resizeInputs = function(table, inputType) {
var cols = [],
rows = table+" tbody tr";
angular.forEach($(rows), function(element, key, obj) {
$(element).find('td').each(function(i, el) {
var thisInput = $(el).find(inputType),
currentWidth = cols[i] == null ? null : cols[i],
maxWidth = Math.max(currentWidth, $(thisInput).width());
if (thisInput.length > 0 && maxWidth > 0) {
cols[i] = maxWidth;
}
});
});
$.each(cols, function(index, el) {
if (el != undefined) {
var x = index + 1;
$(rows).children('td:nth-child('+x+')').find(inputType).width(el);
}
});
}
편집 : GetData의 기능 :
$scope.searchTable = function(){
$scope.doSelectFunctions = true;
$scope.copySendDate = null;
var today = new Date();
todayStr = (today.getMonth() + 1) + "/" + today.getDate() + "/" + today.getFullYear();
searchCriteria = {
// startDate: toStartTimeStamp(todayStr),
startDate: toStartTimeStamp("11/01/2014"),
endDate: toEndTimeStamp(todayStr)
};
$scope.tableParams = new ngTableParams({
count: 100, // Default results per page, down from 1000!
sorting: {
pending: 'desc',
campaignId: 'desc',
}
},{
getData: function($defer, params) {
// ajax request to api
$timeout(function() {
Report.search(searchCriteria, function(data) {
angular.forEach(data, function(v,k) {
$scope.doCampaignInfo(v);
if (pageData.bulkProfileData.length == 0) {
pageData.bulkProfileData.push({ioOfferId:v.ioOfferId, profileId:v.profileId});
}
else if (v.ioOfferId != null && v.profileId != null) {
var stop = pageData.bulkProfileData.length,
ioOfferIdFound = false,
profileIdFound = false;
for (var i = 0; i< stop; i++) {
if (pageData.bulkProfileData[i].ioOfferId == v.ioOfferId) {
ioOfferIdFound = true;
}
if (pageData.bulkProfileData[i].profileId == v.profileId) {
profileIdFound = true;
}
}
if (!ioOfferIdFound || !profileIdFound) {
pageData.bulkProfileData.push({ioOfferId:v.ioOfferId, profileId:v.profileId})
}
}
});
$scope.campaignData = data;
$scope.doProfileAssetStats($scope.campaignData);
$scope.searchDone = true;
$scope.dataLoading = false;
// Sort the data
var orderedData = params.sorting ? $filter('orderBy')(data, params.orderBy()) : data;
// Filter the data
orderedData = $filter('campaignStatusFilter')(orderedData, $scope.campaignStatusForFilter);
orderedData = $filter('filter')(orderedData, $scope.tblSearch);
// Update table params
params.total(orderedData.length);
// Slice off the data for the current page
$scope.campaignData = orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count());
// Set the lastPage
$scope.lastPage = Math.ceil($scope.tableParams.total()/$scope.tableParams.count());
// Resize all the select elements
$scope.resizeInputs('#search-results', 'select');
// Do the stuff
$defer.resolve($scope.campaignData);
});
}, 50);
}
});
};
내가 대신 순수 각도 솔루션을 사용할 수 있다면, 내가 좋겠 훨씬 선호한다. 각 열의 선택 요소를 바인딩하여 동일한 너비를 공유하는 방법이 있습니까? 가능한 경우 다른 값을 선택하면 <select>
의 너비가 변경되므로 이것이 가장 좋습니다!
감사합니다.
getData 함수를 표시 할 수 있습니까? – wrschneider
@ wrschneider99 getData 함수를 포함하도록 업데이트되었습니다. – DondeEstaMiCulo
'$ defer.resolve ($ scope.campaignData) .then (function() {resizeInputs})'의 데이터 해석 등에'resizeInputs'을 적용하지 않는 이유는 무엇입니까? –