2014-05-12 13 views
7

Tôi cần để có thể làm mới dữ liệu trong bảng ng của tôi. Các hình ảnh sau đây chứa kịch bản trường hợp sử dụng đầy đủ. main view Khi người dùng nhấp vào tìm kiếm cho BrandID, một cửa sổ phương thức mới sẽ xuất hiện: modal1Cách làm mới NG-Bảng được tải từ một yêu cầu http với dữ liệu động

Nó chứa một bảng ng với một số dữ liệu được tải vào đó. Sau khi phương thức được loại bỏ, tôi nhấp vào tìm kiếm thứ hai (GroupID), ở đây cùng một cửa sổ phương thức với bảng ng được mở nhưng ngay cả khi yêu cầu là ok và dữ liệu được trả về từ máy chủ, tải không thành công: modal2

Tôi muốn có thể làm mới bảng để khởi tạo bảng với dữ liệu mới nhận được.

Tập lệnh trong số Plunker được gọi mỗi lần chuyển đổi chế độ.

+0

nếu bảng dựa trên mô hình, bạn không cần phải làm mới nó. Góc làm nó tự động (ngRepeat có người theo dõi riêng). Chỉ cần ràng buộc mô hình bảng với dạng 'Thêm sản phẩm mới' (còn gọi là' formList.push (createdForm); ') –

+0

@Maxim Bảng này không dựa trên các mô hình ng. đây là cửa sổ phương thức hiển thị trên tìm kiếm, vui lòng kiểm tra html plunker. Các cửa sổ phương thức không được sử dụng để thêm toàn bộ sản phẩm, chúng chỉ được sử dụng để thêm một số thuộc tính vào các trường của biểu mẫu – Susy11

Trả lời

1

Giải pháp cho vấn đề có thể được tìm thấy here. Nó không phải là một giải pháp tốt nhưng bây giờ nó là tốt nhất. Bằng cách buộc một số khác nhau cho mỗi yêu cầu, bảng sẽ tải lại dữ liệu của nó và bạn sẽ nhận được kết quả mong muốn. Bạn có thể tìm thấy Plunk mới here Xin lưu ý tầm quan trọng của việc có số lượng mỗi trang khác nhau cho mỗi yêu cầu. Nếu thuộc tính count được đặt thành cùng một số thì giải pháp sẽ thất bại. Tôi hy vọng rằng điều này làm cho nó rõ ràng, và tôi cũng hy vọng rằng các nhà phát triển của ng-bảng sẽ khắc phục vấn đề này

10

Hãy thử này để cập nhật bảng dữ liệu:

$scope.tableParams.reload(); 

Edit: Tôi tìm thấy một lỗi có thể trong mã của bạn ... Tôi nghĩ bạn nên thay đổi này:

var orderedData = params.sorting() ? 
    $filter('orderBy')(filteredData, params.orderBy()) : 
    $scope.datay; 

này:

var orderedData = params.sorting() ? 
    $filter('orderBy')(filteredData, params.orderBy()) : 
    filteredData; 

Điều đó có hoạt động tốt hơn không?

+0

Xin chào, giải pháp không hoạt động vì nếu tôi tải lại bảng trước khi khởi tạo với dữ liệu mới, nó sẽ cung cấp một lỗi dữ liệu không xác định. – Susy11

+0

Xem câu trả lời cập nhật của tôi ... – erikt

+0

Cảm ơn bạn đã trả lời nhưng vẫn không giải quyết được vấn đề. Tôi tìm thấy một cách giải quyết mà tôi sẽ đăng trong một câu trả lời. – Susy11

1

Mã này ví dụ như để làm việc, hãy kiểm tra này SO câu hỏi cho giải thích thêm: ng-table not working for dynamic data

// Get data from factory 
var data = dataFactory.query(); 

//Use promise to load data to table, note the replacing of the second tableParams 
//object parameter with a function 
data.$promise.then(function (data){ 
    $scope.tableParams = new ngTableParams({ 
     page: 1,   // show first page 
     count: 10, 
     sorting: { 
      name: 'asc' 
     }, 
     filter: { 
      name: undefined    
     } 
    }, resetTableParams() 
    ); 
}); 

//The function that replaces the tableParams param 
var resetTableParams = function(){ 
    return { 
     total: data.length, 
     getData: function($defer, params) { 
      var filteredData = params.filter() ? $filter('filter')(data, params.filter()) : data; 
     var orderedData = params.sorting() ? $filter('orderBy')(data, params.orderBy()) : filteredData; 

     params.total(orderedData.length); 
     $defer.resolve($scope.data = orderedData.slice((params.page() -1) * params.count(), params.page() * params.count()));   
     } 
    } 
} 

//A method to update the table that can be called when closing a modal 
var updateTable = function(){ 
    data = dataFactory.query(); 
    data.$promise.then(function (data){ 
     $scope.tableParams.reload(); 
    }); 
} 

// Add table row to table in modal and call updateTable() on closing modal 
$scope.addRow = function(){ 
    var modalInstance = $modal.open({ 
     templateUrl: 'resources/partials/newrecord.html', 
     controller: NewRecordModalCtrl 
    }) 

    modalInstance.result.then(function(){ 
     updateTable(); 
    }); 
} 
1

Mọi người, giờ tôi hỗ trợ repo này và cuối cùng đã khắc phục sự cố trong v0.4.2!

+0

Xin chào, nơi nào trong repo này là một ví dụ hoặc giải thích? –

Các vấn đề liên quan