Ng-table: tableParams.reload()λŠ” ν•„ν„° 데이터λ₯Ό λ‹€μ‹œ λ‘œλ“œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2014λ…„ 01μ›” 27일  Β·  30μ½”λ©˜νŠΈ  Β·  좜처: esvit/ng-table

μƒˆ μ™ΈλΆ€ λ°μ΄ν„°λ‘œ ν…Œμ΄λΈ”μ„ λ‹€μ‹œ λ‘œλ“œν•˜λŠ” tableParams.reload()(및 params.total(filteredData.length))λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμ§€λ§Œ "select" 및 "select-multiple" ν•„ν„°μ˜ 선택 ν•­λͺ©μ€ λ³€κ²½λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. tableParams.reload()λŠ” "filter-data" ν•¨μˆ˜λ₯Ό λ‹€μ‹œ ν˜ΈμΆœν•΄μ•Ό ν•©λ‹ˆλ‹€. 이것을 λ‹¬μ„±ν•˜λŠ” λ‹€λ₯Έ 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ‚΄ 데이터가 DOM에 μ„±κ³΅μ μœΌλ‘œ λ‘œλ“œλ˜μ—ˆμ§€λ§Œ μ„œλ²„μ—μ„œ 데이터λ₯Ό κ°€μ Έμ˜€κ³  tableParams.reload()둜 ng-table을 μƒˆλ‘œ 고치고자 ν•  λ•Œ κ²°κ³Όλ₯Ό λ°˜μ˜ν•˜μ§€ μ•Šμ§€λ§Œ μ •λ ¬ λ˜λŠ” νŽ˜μ΄μ§•μ„ ν΄λ¦­ν•˜λ©΄ κ²°κ³Όκ°€ λ°˜μ˜λ©λ‹ˆλ‹€.
이것은 μ–΄λ–€ λ¬Έμ œκ°€ 될 수 μžˆμŠ΅λ‹ˆκΉŒ?

λͺ¨λ“  30 λŒ“κΈ€

μ•ˆλ…•ν•˜μ„Έμš”. μš°μ„  - ν”„λ‘œμ νŠΈμ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.
λ‚˜λŠ” 같은 문제λ₯Ό κ°€μ§€κ³ μžˆλ‹€. μ„œλ²„μ—μ„œ κ°€μ Έμ˜¨ λ°μ΄ν„°λ‘œ ν•„ν„°λ₯Ό μ—…λ°μ΄νŠΈν•΄μ•Ό ν•˜μ§€λ§Œ ν•„ν„° 데이터 κΈ°λŠ₯을 νŠΈλ¦¬κ±°ν•˜λŠ” 방법을 λͺ¨λ¦…λ‹ˆλ‹€.

getData ν•¨μˆ˜ λ‚΄μ—μ„œ 데이터λ₯Ό μ„ μ–Έν•˜λ©΄ ν…Œμ΄λΈ”μ„ μ—…λ°μ΄νŠΈν•˜λŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€.
κ·Έλž˜μ„œ..... getData: function($defer, params){
var 데이터 = $scope.yourdata;
var μ£Όλ¬Έ 데이터 = ...........................
}

λ‚΄ 데이터가 DOM에 μ„±κ³΅μ μœΌλ‘œ λ‘œλ“œλ˜μ—ˆμ§€λ§Œ μ„œλ²„μ—μ„œ 데이터λ₯Ό κ°€μ Έμ˜€κ³  tableParams.reload()둜 ng-table을 μƒˆλ‘œ 고치고자 ν•  λ•Œ κ²°κ³Όλ₯Ό λ°˜μ˜ν•˜μ§€ μ•Šμ§€λ§Œ μ •λ ¬ λ˜λŠ” νŽ˜μ΄μ§•μ„ ν΄λ¦­ν•˜λ©΄ κ²°κ³Όκ°€ λ°˜μ˜λ©λ‹ˆλ‹€.
이것은 μ–΄λ–€ λ¬Έμ œκ°€ 될 수 μžˆμŠ΅λ‹ˆκΉŒ?

@basilcronusκ°€ μ œμ•ˆν•œ 것을 두 번째둜 λ§ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. 이것은 μ €μ—κ²Œλ„

@developersatish와 λ™μΌν•œ λ¬Έμ œκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
이 λ¬Έμ œκ°€ 해결될 λ•ŒκΉŒμ§€ κΈ°λ‹€λ¦¬μ‹­μ‹œμ˜€.

μ•ˆλ…•ν•˜μ„Έμš” μ—¬λŸ¬λΆ„. λ‚˜λŠ” μ΅œκ·Όμ— ngTable을 μ‚¬μš©ν•˜κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€. 특히 μ€‘μ²©λœ ngTableκ³Ό λΆ€λͺ¨ 데이터와 λ³„λ„λ‘œ 데이터λ₯Ό λ‹€μ‹œ λ‘œλ“œν•  λ•Œ λΉ„μŠ·ν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒμ€ λΉ λ₯Έ μ•„μ΄λ””μ–΄μž…λ‹ˆλ‹€.

μƒμœ„ 컨트둀러:

var λΆ€λͺ¨ 데이터 = [...];

$scope.details = -1

$scope.showDetails = ν•¨μˆ˜(id) {
$scope.details = 아이디;
};

// ngTable ////////
$scope.tableParams = μƒˆλ‘œμš΄ ngTableParams({
page: 1, // 첫 νŽ˜μ΄μ§€ ν‘œμ‹œ
count: 10, // νŽ˜μ΄μ§€λ‹Ή 카운트
μ •λ ¬: {
id: 'asc' // 초기 μ •λ ¬
}
}, {
total: parentData.length, // 데이터 길이
getData: ν•¨μˆ˜($지연, λ§€κ°œλ³€μˆ˜) {
// λ‚΄μž₯ 각도 ν•„ν„° μ‚¬μš©
var μ£Όλ¬Έ 데이터 = params.sorting() ?
$filter('orderBy')(parentData, params.orderBy()) :
λΆ€λͺ¨ 데이터;
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});

htmlμ—μ„œ ng-click을 μ‚¬μš©ν•˜μ—¬ 여기에 IDλ₯Ό 보내고 μ„ΈλΆ€ 정보 λ²”μœ„λ₯Ό λ³€κ²½ν•©λ‹ˆλ‹€.

ν•˜μœ„ 컨트둀러(첫 번째 μ»¨νŠΈλ‘€λŸ¬μ™€ κ΄€λ ¨λœ 보쑰 ν…Œμ΄λΈ”):

var μžμ‹ 데이터 = [...];

$scope.$parent.$watch('μ„ΈλΆ€ 정보', ν•¨μˆ˜() {
console.log("μ—¬κΈ°μ„œ λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.");
$scope.tableParams2.reload();
});

// μžμ‹ ngTable ////////
$scope.tableParams2 = μƒˆλ‘œμš΄ ngTableParams({
page: 1, // 첫 νŽ˜μ΄μ§€ ν‘œμ‹œ
count: 10, // νŽ˜μ΄μ§€λ‹Ή 카운트
μ •λ ¬: {
id: 'asc' // 초기 μ •λ ¬
}
}, {
total: childData.length, // 데이터 길이
getData: ν•¨μˆ˜($지연, λ§€κ°œλ³€μˆ˜) {
// λ‚΄μž₯ 각도 ν•„ν„° μ‚¬μš©
var μ£Όλ¬Έ 데이터 = params.sorting() ?
$filter('orderBy')(childData, params.orderBy()) :
μžμ‹ 데이터;
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
},
$scope: { $data: {} }
});

ν΄λ¦­ν•˜λ©΄ λ³€κ²½ 사항을 λ³Ό 수 μžˆμ§€λ§Œ μžμ‹ ν…Œμ΄λΈ”μ΄ μ—…λ°μ΄νŠΈλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이것이 λ„μ›€μ΄λ˜λŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ 관련이 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

μ•ˆλ…•,
@developersatish와 λ™μΌν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. ν…Œμ΄λΈ” λ°μ΄ν„°λŠ” ν…Œμ΄λΈ”μ„ μ •λ ¬ν•˜κ±°λ‚˜ ν•„ν„°λ§ν•œ ν›„μ—λ§Œ μ—…λ°μ΄νŠΈλ©λ‹ˆλ‹€. 이 λ¬Έμ œμ— λŒ€ν•œ 해결책이 μžˆμŠ΅λ‹ˆκΉŒ?

λΉ„μŠ·ν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

클릭 μ΄λ²€νŠΈμ—μ„œ μ„œλ²„μ—μ„œ 데이터 검색을 μ‹œμž‘ν•©λ‹ˆλ‹€(닀쀑 호좜).
κ·Έλž˜μ„œ μ €λŠ” for 루프가 있고 거기에 GET μš”μ²­μ΄ 있고 ν…Œμ΄λΈ” 비동기에 ν”Œλ‘―ν•˜λ €λŠ” λ²”μœ„ λ³€μˆ˜λ‘œ λ°˜ν™˜λ˜λŠ” κ²°κ³Όλ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ ν΄λ¦­ν•˜λ©΄ λ‹€μŒκ³Ό 같이 λ‚΄ ν…Œμ΄λΈ”μ„ μΈμŠ€ν„΄μŠ€ν™”ν•©λ‹ˆλ‹€.

`$scope.tableParams = new ngTableParams({
        page: 1, // show first page
        count: 10, // count per page
        sorting: {
            Country: 'asc' // initial sorting
        }
    }, {
        total: $scope.continentTableData.length, // length of data
        getData: function($defer, params) {
            for (var i = 0; i < numberOfCountries; i++) {
                try {
                    var country = $("path[class*=" + $scope.currentContinentCountries[i].toUpperCase() + "]")[0].__data__.properties.name;
                    MapService.getInfographicsData(2013, country, function(infrographicsData) {
                        counter++;
                        // debugger;
                        var cpi = infrographicsData[0].data.CPI;
                        var trace = infrographicsData[1].data;
                        var countryName;

                        if (cpi == null) {
                            countryName = trace.Ref_Country;
                        } else {
                            countryName = cpi.Country;
                        }

                        var joinedData = {
                            Country: countryName,
                            Cpi: cpi,
                            Trace: trace
                        }
                        $scope.continentData.push(joinedData);

                        $scope.continentTableData = $scope.continentData;

                        // if (counter==numberOfCountries-1) {
                        //     console.log("tier");
                            $timeout(function() {
                            // update table params
                            params.total($scope.continentTableData.length);
                            // set new data
                            console.log("new data set");
                            $defer.resolve($scope.continentTableData);
                        }, 1500);
                        // };

                    });
                } catch (e) {
                    // console.log(e);
                    continue;
                }                    
            }

            // $scope.$apply();
        }
    });`

ajaxλ₯Ό μ‚¬μš©ν•˜λŠ” ngTable μ˜ˆμ œμ—μ„œμ™€ 같이. κ·ΈλŸ¬λ‚˜ ν…Œμ΄λΈ”μ— 아무 것도 ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(getDataκ°€ ν˜ΈμΆœλ˜μ§€ μ•ŠμŒ).

"μƒˆλ‘œ κ³ μΉ¨" tableParamsλ₯Ό ν΄λ¦­ν•˜λ©΄ 각 ν•­λͺ©μ΄ 볡제된 것을 μ œμ™Έν•˜κ³  ν…Œμ΄λΈ”μ΄ λͺ¨λ“  ν•­λͺ©μ„ λ‘œλ“œν•˜κΈ° μ‹œμž‘ν•©λ‹ˆλ‹€.

μ–΄λ–€ 아이디어라도?

@developersatish νŽ˜μ΄μ§€ 맀김 λ²„νŠΌμ— μ²¨λΆ€λœ κΈ°λŠ₯을 λ³΅μ‚¬ν•˜μ—¬ μ„œλ²„μ—μ„œ μƒˆ 데이터λ₯Ό λ°˜μ˜ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

$scope.tableParams.count(1);

λ‚˜λŠ” 이것을 λ‚΄ μš”μ²­μ˜ μ½œλ°±μ— λ„£μ—ˆμŠ΅λ‹ˆλ‹€.

myRequest().then(function(response) {
    $scope.data = response;
    $scope.tableParams.total($scope.data.length);
    $scope.tableParams.count(1);
});

νŽΈμ§‘ν•˜λ‹€:

λ‚΄ μ›λž˜μ˜ κ²Œμ‹œλ¬Όμ—μ„œμ΄ 1 μ—μ„œ $scope.tableParams.count(1) 사싀에 μ„€μ • ν•œ 값을 ν¬ν•¨ν•˜λŠ” λ³€μˆ˜λ‘œ κ΅μ²΄ν•΄μ•Όν•©λ‹ˆλ‹€ count μ—μ„œ ngTableParams .
μž‘μ—… μ˜ˆμ œλŠ” http://embed.plnkr.co/harWG3J6OlNHzbOu0e6S/preview λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

이것이 이 λ¬Έμ œμ— λŒ€ν•œ μ΅œμƒμœ„ 검색 κ²°κ³Όμ΄λ―€λ‘œ λ‚΄ μ†”λ£¨μ…˜μ— λŒ€ν•΄ μˆ˜ν–‰ν•œ μž‘μ—…μ„ ν¬ν•¨ν•˜κ² μŠ΅λ‹ˆλ‹€. λ‚˜λŠ” λ‹¨μˆœνžˆ filter-data ν•¨μˆ˜μ—μ„œ defer.resolve에 λŒ€ν•œ 인수둜 μ‚¬μš©λ˜λŠ” {id,title} 객체의 배열을 $scope에 μ €μž₯ν–ˆμŠ΅λ‹ˆλ‹€. (μ²˜μŒμ—λŠ” λΉ„μ–΄ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.) 그런 λ‹€μŒ μ–Έμ œλ“ μ§€ ν•΄λ‹Ή 배열을 μ—…λ°μ΄νŠΈν•  수 있으며 λ³€κ²½ 사항은 ν•„ν„° 선택에 λ°˜μ˜λ©λ‹ˆλ‹€. κ·Έλž˜μ„œ λ‚΄ ajax 호좜이 μ„œλ²„ 응닡을 κ°€μ Έμ˜¬ λ•Œ μ—…λ°μ΄νŠΈν•©λ‹ˆλ‹€.

λ˜ν•œ 제 κ²½μš°μ—λŠ” μ‚¬μš©μžκ°€ 검색 λ²”μœ„λ₯Ό ν™•μž₯함에 따라 ν…Œμ΄λΈ” 데이터 μ„ΈνŠΈκ°€ ν™•μž₯λ©λ‹ˆλ‹€(증가됨). μ΄λ ‡κ²Œ ν•˜λ €λ©΄ 선택 필터도 μˆ˜μ •(diff 적용)ν•΄μ•Ό ν•©λ‹ˆλ‹€.

λ‚˜λŠ” 그것을 μ‹œλ„ν–ˆμ§€λ§Œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μž‘μ—… 예제λ₯Ό 뢙여넣을 수 μžˆμŠ΅λ‹ˆκΉŒ?

μ–˜λ“€ μ•„,
@almaplayera 와 같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒκ³Ό 같은 μ‹œλ‚˜λ¦¬μ˜€κ°€ μžˆμŠ΅λ‹ˆλ‹€.

1. λ“œλ‘­λ‹€μš΄μ— μ‚¬μš©λœ ν•„ν„° λ°μ΄ν„°λŠ” μ„œλΉ„μŠ€μ—μ„œ κ°€μ Έμ˜¨ κ²ƒμž…λ‹ˆλ‹€.

2. 그리고 λ™μΌν•œ 데이터λ₯Ό μ—…λ°μ΄νŠΈν•˜κΈ° μœ„ν•΄ μ‚¬μš©μžκ°€ μƒˆ ν•­λͺ©μ„ μΆ”κ°€ν•˜κ±°λ‚˜ κΈ°μ‘΄ ν•­λͺ©μ„ μ—…λ°μ΄νŠΈν•  수 μžˆλŠ” μ„Ήμ…˜μ΄ μžˆμŠ΅λ‹ˆλ‹€.

3. λ“œλ‘­λ‹€μš΄μ— λŒ€ν•œ μΆ”κ°€/νŽΈμ§‘ μ„Ήμ…˜ ν•„ν„° λ°μ΄ν„°μ˜ ν•­λͺ©μ„ μΆ”κ°€/μ—…λ°μ΄νŠΈν•œ ν›„ ν…Œμ΄λΈ”μ΄ λ‹€μ‹œ λ‘œλ“œλ˜λ©΄ ν•΄λ‹Ή λ“œλ‘­λ‹€μš΄μ„ μƒˆλ‘œ 고쳐야 ν•©λ‹ˆλ‹€.

νšŒμ‚¬ 데이터λ₯Ό 필터링 λ°μ΄ν„°λ‘œ κ°€μ Έμ˜€κΈ° μœ„ν•΄ 이 μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

screen4ngtable

κ·Έ ν›„ λ‚΄ 보기의 ν•„ν„° λ°μ΄ν„°μ—μ„œ getCompany λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν–ˆμŠ΅λ‹ˆλ‹€.

screen5ngtable

λˆ„κ΅¬λ“ μ§€ λ‚΄ ν•„ν„° 데이터λ₯Ό μ„œλΉ„μŠ€μ˜ μ΅œμ‹  λ°μ΄ν„°λ‘œ μ—…λ°μ΄νŠΈν•˜λŠ” μ†”λ£¨μ…˜μ„ μ œμ•ˆν•˜κ±°λ‚˜ μœ μ‚¬ν•œ μ‚¬μš© 사둀에 λŒ€ν•œ λͺ‡ 가지 예λ₯Ό μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

@esvit : https://github.com/esvit μ—μ„œ μ œμ•ˆν•œ @israelidanny 와 같은 λ³΄κΈ°μ—μ„œ λ™μΌν•œ λ³€μˆ˜λ₯Ό ν•„ν„° 데이터에 μ „λ‹¬ν•˜λ €κ³  μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€. /ng-table/pull/342 ν•˜μ§€λ§Œ 그것도 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. :(

μΆ”μ‹  : λ‚˜λŠ” tableParams.reload(); μΆ”κ°€ 및 νŽΈμ§‘ ν›„.

아무것도 μ»€λ°‹ν•˜κΈ° 전에 ng ν…Œμ΄λΈ”μ—μ„œ μ „ν™˜ν–ˆκΈ° λ•Œλ¬Έμ— 더 이상 μ½”λ“œκ°€ μ—†μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ©”λͺ¨λ¦¬μ—μ„œ 이동:

ν•„ν„° ν•¨μˆ˜(getCompany ν•¨μˆ˜)λŠ” ν…Œμ΄λΈ” μ΄ˆκΈ°ν™”μ—μ„œ ν•œ 번만 ν˜ΈμΆœλ©λ‹ˆλ‹€. λ”°λΌμ„œ λ ˆμ½”λ“œ λ³€κ²½ 사항이 μžˆμ„ λ•Œλ§ˆλ‹€ ν™•μΈλœ 데이터 배열에 λ³€κ²½ 사항을 μ μš©ν•΄μ•Ό ν•˜λ©° angularλŠ” μ΄λŸ¬ν•œ λ³€κ²½ 사항을 dom에 μ μš©ν•©λ‹ˆλ‹€.

$scope.company_filter = [];

$scope.getCompanyFilter = function(data) {
  var def = $q.defer();
  companyService.getAll().success(function(response) {
    $scope.updateCompanyFilter(response.data);
    def.resolve($scope.company_filter);
  });
  return def;
};

$scope.updateCompanyFilter = function(data) {
  $scope.company_filter.length = 0;
  for (i in data) {
    $scope.company_filter.push({
        'id': data[i].id,
        'title': data[i].name
    });
  }
};

// Then wherever you refresh your table data, just call updateCompanyFilter(data).
// Or you could micro manage the filter array when you do adds/deletes instead of reseeding it every time.

<td ... filter-data="getCompanyFilter($column)" >

λ‹€μ‹œ λ§ν•˜μ§€λ§Œ, λ‚˜λŠ” λͺ‡ κ°œμ›”μ΄ 지났기 λ•Œλ¬Έμ— 틀릴 수 μžˆμŠ΅λ‹ˆλ‹€.

이 λ¬Έμ œλŠ” μ΅œμ‹  λ²„μ „μ˜ ng-tableμ—μ„œ μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆκΉŒ?

λˆ„κ΅°κ°€ 예제 μ½”λ“œλ₯Ό μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

그렇지 μ•Šλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

이제 λ§Œλ“€κΈ° 어렡지 μ•Šμ„ 것 κ°™μ•„μš”.
controller.loadFilterData ν•¨μˆ˜μ—μ„œ ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.
ν…Œμ΄λΈ” λ§€κ°œλ³€μˆ˜. 그러면 λͺ©λ‘μ΄ 변경될 λ•Œ 이것을 ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.
λ„ˆμ˜ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜.

씨

2015λ…„ 6μ›” 19일 κΈˆμš”μΌ μ˜€μ „ 6:59, rachithaShetty [email protected]
썼닀:

이 λ¬Έμ œλŠ” μ΅œμ‹  λ²„μ „μ˜ ng-tableμ—μ„œ μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆκΉŒ?

β€”
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/esvit/ng-table/issues/186#issuecomment -113384084.

:+1: @kyleboyle : κ·€ν•˜μ˜ μ†”λ£¨μ…˜μ€ 친ꡬλ₯Ό 효과적 μ΄μ—ˆμŠ΅λ‹ˆλ‹€..! λŒ€λ‹¨ν•˜λ‹€...! 정말 κ°μ‚¬ν•©λ‹ˆλ‹€.

이 λ¬Έμ œμ— λŒ€ν•œ ν•΄κ²° 방법(Pull request 403: https://github.com/esvit/ng-table/pull/403)이 v0.4.2μ—μ„œ λ³‘ν•©λ˜μ—ˆμ§€λ§Œ λ³€κ²½ 사항은 μ΄ν›„λ‘œ λ˜λŒλ €μ‘ŒμŠ΅λ‹ˆλ‹€.

ng-table.js λ³€κ²½μ˜ 549ν–‰μ—μ„œ

$scope.$watch('params.$params', function(newParams, oldParams) {
μ—κ²Œ
$scope.$watch('[params.$params, params.data]', function(newParams, oldParams) {

μ΄λ ‡κ²Œ ν•˜λ©΄ 데이터가 μ—…λ°μ΄νŠΈλ˜λŠ” λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμ§€λ§Œ λ³€κ²½ 사항을 λ Œλ”λ§ν•˜κΈ° μœ„ν•΄ ν…Œμ΄λΈ”μ΄ μƒˆλ‘œ 고쳐지지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
그것은이 버그가이에 재 λ„μž… 된 κ²ƒμœΌλ‘œ 보인닀 컀밋 : https://github.com/esvit/ng-table/commit/9189e987fba90b07ffc6b17c982961ad65edf725#diff -6aca4bc06732c0635eb9860dc6cd040fL490

λΆˆν–‰νžˆλ„ $watch ' params.data λŠ” νŠΉμ • μƒν™©μ—μ„œ 문제λ₯Ό μΌμœΌν‚΅λ‹ˆλ‹€.

params.data λ‚΄μ˜ μš”μ†Œκ°€ μˆœν™˜ μ°Έμ‘°λ₯Ό ν¬ν•¨ν•˜λŠ” λ³΅μž‘ν•œ 경우 angular.copy κ°€ λ”₯ 클둠을 생성할 λ•Œ $watch 'ing _by value_ μŠ€νƒ μ˜€λ²„ν”Œλ‘œ μ˜ˆμ™Έκ°€ λ°œμƒν•©λ‹ˆλ‹€.

angular.copy 의 μƒˆ 버전이 이 νŠΉμ • 문제λ₯Ό ν•΄κ²°ν•œλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ μ„±λŠ₯μƒμ˜ 이유둜 params.data _κ°’μœΌλ‘œ_ λ³΄λŠ” 것은 μ—¬μ „νžˆ β€‹β€‹λ‚˜μœ μƒκ°μž…λ‹ˆλ‹€.

@kyleboyle 이 μ½”λ“œλŠ” μ™„λ²½ν•˜κ²Œ μž‘λ™ν•©λ‹ˆλ‹€! 감사 ν•΄μš”! 그리고 inArray ν•¨μˆ˜λ₯Ό μΆ”κ°€ν•˜λ©΄ 쀑볡을 κ±ΈλŸ¬λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

    $scope.manufacturer_filter = [];
    $scope.getManufactFilter = function(column){
        var def = $q.defer();
        ResourseAPI.query(function(data){
            $scope.updateManufactFilter(data.devices);
            def.resolve($scope.manufacturer_filter);
        });
        return def;
    };
    $scope.updateManufactFilter= function(data) {
        var arr = [];

        angular.forEach(data, function (item) {
            if (inArray(item.manufacturer, arr) === -1) {
                arr.push(item.manufacturer);
                $scope.manufacturer_filter.push({
                    'id': item.manufacturer,
                    'title': item.manufacturer
                });
            }
        });
    };

    var inArray = Array.prototype.indexOf ?
    function (val, arr) {
        return arr.indexOf(val);
    } :
    function (val, arr) {
        var i = arr.length;
        while (i--) {
            if (arr[i] === val) return i;
        }
        return -1;
    };

@kyleboyle κ·€ν•˜μ˜ μ†”λ£¨μ…˜μ€ ν›Œλ₯­ν•©λ‹ˆλ‹€.
ng-table-dynamic을 μ‚¬μš©ν•˜μ—¬ μœ μ‚¬ν•œ 것을 κ΅¬ν˜„ν•  수 μžˆλŠ”μ§€ μ•„λŠ” μ‚¬λžŒμ΄ μžˆμŠ΅λ‹ˆκΉŒ?
λ‚˜λŠ” μžλ°” 슀크립트둜 열을 λ™μ μœΌλ‘œλ‘œλ“œν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ:

var column = {
    title: 'Example',
    sortable: 'example',
    filter: 'example',
        filterData: .....,
    show: true,
    field: 'example'
};

filterData 속성은 λ¬΄μ—‡μœΌλ‘œ μ„€μ •ν•΄μ•Ό ν•©λ‹ˆκΉŒ? μ•„λ‹ˆλ©΄ 데이터 ν•„ν„°λ₯Ό λ‹€μ‹œ λ‘œλ“œν•˜λŠ” λ‹€λ₯Έ 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

선택 ν•„ν„°κ°€ 데이터 μ†ŒμŠ€λ‘œ μ‚¬μš©ν•  배열을 μ§€μ •ν•˜λŠ” λ‹€μ–‘ν•œ 방법이 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 각 방법은 ng-table 및 ng-table-dynamic λͺ¨λ‘μ— μ μš©λ©λ‹ˆλ‹€.

λ‹€μŒ μ½”λ“œ μƒ˜ν”Œμ΄ 문제λ₯Ό νŒŒμ•…ν•˜λŠ” 데 도움이 λ κΉŒμš”?

http://codepen.io/christianacca/pen/JdqjxB?editors=101

쒋은 μƒ˜ν”Œμ΄μ§€λ§Œ λ‚΄ λ¬Έμ œμ— λŒ€ν•œ μ†”λ£¨μ…˜μ„ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€. λͺ¨λ“  μ˜ˆμ—μ„œ λ°μ΄ν„°λŠ” ν•œ 번만 λ‘œλ“œλ˜μ§€λ§Œ(동기화 λ˜λŠ” 비동기화) λ‹€μ‹œ λ‘œλ“œλ˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.

λ‚΄κ°€ μ–»λŠ” κ²ƒμ˜ μ˜ˆλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
두 개의 열이 μžˆμŠ΅λ‹ˆλ‹€. ꡭ가와 λ„μ‹œ 각각에 ν•„ν„°κ°€ μžˆμŠ΅λ‹ˆλ‹€.
κ·Έλž˜μ„œ:

  • κ΅­κ°€ ν•„ν„°κ°€ null이면 μ„œλ²„μ— λͺ¨λ“  λ„μ‹œλ₯Ό ν‘œμ‹œν•©λ‹ˆλ‹€.
  • κ΅­κ°€ ν•„ν„°κ°€ μ„ νƒλ˜λ©΄ μ„œλ²„μ— ν•΄λ‹Ή κ΅­κ°€κ°€ μ μš©λ˜λŠ” μœ μΌν•œ λ„μ‹œλ₯Ό μš”μ²­ν•˜κ³  λ„μ‹œ μ—΄μ˜ filterDataλ₯Ό μ—…λ°μ΄νŠΈν•©λ‹ˆλ‹€.

μ΄ν•΄λœλ‹€? λ‚΄ μ˜μ–΄μ— λŒ€ν•΄ λ―Έμ•ˆ ν•΄μš”.

λ‹΅μž₯을 보내 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

@kyleboyle μ΄λŸ¬ν•œ μ†”λ£¨μ…˜ 쀑 μ–΄λŠ 것도 λ‚˜λ₯Ό μœ„ν•΄ μž‘λ™ν•˜μ§€ μ•ŠμœΌλ©°(μ €λŠ” 필터링을 μˆ˜ν–‰ν•˜μ§€λ„ μ•ŠμŠ΅λ‹ˆλ‹€) κΈ°λ³Έ 데이터가 μ—…λ°μ΄νŠΈλ  λ•Œ ν…Œμ΄λΈ”μ΄ μ—…λ°μ΄νŠΈλ˜μ§€ μ•ŠλŠ” μ—΄μ•…ν•œ μ½”λ“œ ν’ˆμ§ˆμ˜ μ§•ν›„λ‘œ κ°„μ£Όν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ–΄λ–€ Angular ν…Œμ΄λΈ” μ†”λ£¨μ…˜μœΌλ‘œ μ „ν™˜ν•˜μ…¨μŠ΅λ‹ˆκΉŒ?

@BartoGabriel λ‚˜λŠ” λ‹Ήμ‹ μ΄ν•˜λ €λŠ” 일이 κ°€λŠ₯ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. λ‚˜μ™€ ν•¨κ»˜ μΌν•œ μ‚¬λžŒμ€ 당신이 λ§ν•œ 것과 μ •ν™•νžˆ μΌμΉ˜ν•˜λŠ” μžμ‹ μ˜ ν•„ν„° ν…œν”Œλ¦Ώμ„ λ§Œλ“€μ–΄ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŠ” λ‹€μŒ μ˜ˆμ œμ™€ μœ μ‚¬ν•œ λ°©μ‹μœΌλ‘œ select.html ν…œν”Œλ¦Ώμ„ μž¬μ •μ˜ν–ˆμŠ΅λ‹ˆλ‹€. http://codepen.io/christianacca/pen/xGeWGX?editors=101

더 λ§Žμ€ 도움을 λ“œλ¦¬μ§€ λͺ»ν•΄ μ£„μ†‘ν•©λ‹ˆλ‹€. μ‹œκ°„μ΄ μ΄‰λ°•ν•œ κ²ƒλΏμž…λ‹ˆλ‹€!

였 BTW, λ‚΄κ°€ μ–ΈκΈ‰ν•œ μ‚¬λžŒ, κ·ΈλŠ” ui-select2 λ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€

@christianacca λ„μ™€μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. 맀우 μœ μš©ν–ˆμŠ΅λ‹ˆλ‹€.
μ†”λ£¨μ…˜μ΄ 있으면 κ³΅μœ ν•˜κ² μŠ΅λ‹ˆλ‹€.

μ‹œμ›ν•œ :-)

μ•ˆλ…•ν•˜μ„Έμš” μ—¬λŸ¬λΆ„, λ‚΄ μ†”λ£¨μ…˜μ΄ μ™„μ „νžˆ 잘λͺ»λ˜μ—ˆκ±°λ‚˜ @kyleboyle 이 더 λ‚˜μ€ λŒ€μ•ˆμž…λ‹ˆκΉŒ?

μ†”λ£¨μ…˜μ€ λ‚˜λ₯Ό μœ„ν•΄ μž‘λ™ν•˜μ§€ μ•Šμ•˜λ‹€ @telwing,ν•˜μ§€λ§Œ λ‹€μ‹œ, μ–΄λŠ μͺ½λ„ @kyleboyleμ˜ν–ˆλ‹€. ν•˜μ§€λ§Œ μ‹€μ œλ‘œ 필터링을 ν•˜κ³  μžˆμ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. μ €λŠ” $scope.usersλΌλŠ” λ°°μ—΄μ—μ„œ 데이터λ₯Ό μ •λ ¬ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή λ°°μ—΄μ—μ„œ μš”μ†Œλ₯Ό μ œκ±°ν•˜κ³  ν…Œμ΄λΈ” λ§€κ°œλ³€μˆ˜μ—μ„œ reload()λ₯Ό ν˜ΈμΆœν•˜λ©΄ 아무 일도 μΌμ–΄λ‚˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‚΄κ°€ 기본적인 것을 λ†“μΉ˜κ³  μžˆμ§€ μ•ŠλŠ” ν•œ 이와 같은 것이 κ·Έλ ‡κ²Œ λ³΅μž‘ν•˜λ‹€λŠ” 것이 정말 λ†€λžμŠ΅λ‹ˆλ‹€.

@developersatish.i도 tableParams 수λ₯Ό μ„€μ •ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ λ‚΄ getdata ν•¨μˆ˜λŠ” νŽ˜μ΄μ§€ λ‘œλ“œ μ‹œμ—λ§Œ ν˜ΈμΆœλ˜λŠ” 반면 λ“œλ‘­λ‹€μš΄ λͺ©λ‘μœΌλ‘œ 데이터λ₯Ό ν•„ν„°λ§ν•˜λ©΄ 이 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  수 μ—†μŠ΅λ‹ˆλ‹€.

$scope.tableParams = μƒˆλ‘œμš΄ ngTableParams({
page: 1, // 첫 νŽ˜μ΄μ§€ ν‘œμ‹œ
count: 8, // νŽ˜μ΄μ§€λ‹Ή 카운트
μ •λ ¬: {
LastSeen: 'desc' // 초기 μ •λ ¬
},
ν•„ν„°: {
PatientName: '', // 초기 ν•„ν„°
},
}, {
ν•„ν„° μŠ€μœ„μΉ˜: μ°Έ,
getData: ν•¨μˆ˜($defer, params) {
// λ‚΄μž₯ 각도 ν•„ν„° μ‚¬μš©
var FilteredData = params.filter() ?
$filter('filter')($scope.items, params.filter()) :
$scope.items;

        var orderedData = params.sorting() ?
                            $filter('orderBy')(filteredData, params.orderBy()) : filteredData;
        params.total(orderedData.length); // set total for recalc pagination
        $scope.tableParams.count(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));

        $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));



    }
});
이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰