0

원격 서버의 데이터를 보여주는 표가 있습니다. 숫자 입력이 있습니다. 숫자가 변경되면 테이블을 새로 고치고 싶습니다 (arg에 숫자 입력이 있음). 여기 ngTable 맞춤 새로 고침 작업?

내 현재 시도 : 내 로그에 number changed 얻을

$scope.$watch("number", function() { 
    console.log("number changed"); 
    $scope.user_table_columns.length = 0; 
    $scope.user_table_columns = [ 
     { title: 'Loading... (give it 20-25 seconds)', visible: true} 
    ]; 
    if (typeof $scope.stats != "undefined") 
     $scope.stats.length = 0; 
    $scope.stats = []; 
    //$scope.tableParams.reload(); 
    $http.get("/api/thing/"+$scope.number).then(function (result) { 
     $scope.table_data = result.data; 
     $scope.user_table_columns.length = 0; 
     Object.keys($scope.stats[0]).forEach(function (col) { 
      $scope.user_table_columns.push({ title: col, field: col, visible: true }) 
     }); 
    }) 
}); 

; 새로운 HTTP 요청은 없습니다.

+0

loooks 확인 ..may (나는 그 노선에 반환 내가 캐싱했다 변수에 캐시에 사용 된 커서 객체를 할당) ... 문제가 몇 가지 설명의 "오타"이었다 밝혀 그것은 어리석은 소리가되지만 다른 사람의 console.log를 시도해보십시오. if 문 앞과 뒤에서 if 문이 문제를 일으키는 지 확인하십시오. – cjmling

답변

0

@cjmling과 마찬가지로 몇 가지 로그를 추가하십시오. 또한 게시 한 코드를 편집하여 몇 가지 모범 사례를 사용했습니다.

$scope.$watch("number", function (newValue, oldValue) { 
    $log.info("number changed"); 

    $scope.user_table_columns = [ 
    { title: 'Loading... (give it 20-25 seconds)', visible: true } 
    ]; 

    $scope.stats = []; 

    $http.get("/api/thing/" + $scope.number). 
    success(function (data, status, headers, config) { 
    $scope.table_data = data; 

    var keys = Object.keys($scope.stats[0]); 
    angular.forEach(keys, function (col) { 
     $scope.user_table_columns.push({ title: col, field: col, visible: true }); 
    }); 
    }). 
    error(function (data, status, headers, config) { 
    // An error occured, do something.. 
    $log.error('HTTP GET failed! Status code: ' + status); 
    });  
}); 

일반적인 작업에 대해 몇 가지 유틸리티 함수가 제공됩니다. 다음은 각도 제공 유틸리티 목록입니다 : Angular Functions. 주목할 또 다른 사실은 일반적으로 !===에서 벗어나 조건을 검사 할 때 강제적 인 유형의 결과를 초래할 수 있기 때문입니다. !===에는 장소가 있지만 실제로는 !=====을 사용해야한다고 가정하는 것이 안전합니다. 일반적으로 하나의 라인이더라도 조건 블록 주위에 따옴표를 두는 것이 좋습니다. 이것은 사람들이 더 쉽게 읽을 수 있도록 도와줍니다. 또한 user_table_columns 변수의 length 속성을 설정할 필요가 없습니다.이 변수는 참조하는 배열을 변경할 때 업데이트됩니다.

각도 서비스 $log의 사용에 추가되었습니다. 이 방법을 사용하는 것이 좋으며 정보를 로그 아웃하는 데 유용한 유틸리티를 제공합니다. $log.

마지막으로 $http 서비스의 사용을 조금 변경했습니다. 일반적으로 요청할 때 successerror 함수를 정의하면 도움이됩니다. .then을 사용하면 문제가 없지만 요청이 반환 될 때 일어난 일에 대해 많은 정보를 얻지는 못합니다. 오류 처리기를 정의하면 요청에 따라 어떤 일이 발생했는지 알 수 있습니다. 문제를 디버깅 할 때 자세한 정보가 더 좋습니다.

본인의 질문에 직접 답하는 것은 아니지만 귀하가 게시 한 정보가 주어지면 자신의 문제를 해결할 수있는 올바른 방향을 제시하는 것 이상을하기가 어렵다는 것을 알고 있습니다. "number changed"을 로그 아웃했기 때문에 AJAX 요청이 실패했다고 생각합니다. 성공 및 오류 콜백의 출력을 기록하고 요청이 반환 될 때 진행되는 작업을 확인합니다. 희망이 조금 도움이됩니다.

+0

감사합니다. 이제'$ log' 서비스를 사용하고 있습니다. 실제 문제는 무관하다. –

0

이 질문은 3AM;