AngularJS: перезагрузка Ngtable к старым данным

Итак, я использую NGTable для отображения данных на моей странице, данные хранятся в массиве и передаются через параметр набора данных, но когда я программно меняю значение данных в массиве, изменения отображаются правильно в таблице НО, когда я перейти на вторую страницу и снова перейти на первую страницу в таблице с отображением старых данных.

Вот JSFiddle, который иллюстрирует мою проблему: http://jsfiddle.net/vqxscmsu/

    angular.module("uCloud", ["ngTable"])
  .controller("myController", myController);

myController.$inject = ["NgTableParams", "$scope"];

function myController(NgTableParams, $scope) {

        $scope.fsck = [{
      name: "teste1",
      description: "testando1"
    }, {
      name: "teste2",
      description: "testando2"
    }, {
      name: "teste3",
      description: "testando3"
    }, {
      name: "teste4",
      description: "testando4"
    }, {
      name: "teste2",
      description: "testando2"
    }, {
      name: "teste3",
      description: "testando3"
    }, {
      name: "teste4",
      description: "testando4"
    }, {
      name: "teste2",
      description: "testando2"
    }, {
      name: "teste3",
      description: "testando3"
    }, {
      name: "teste4",
      description: "testando4"
    }, {
      name: "teste2",
      description: "testando2"
    }, {
      name: "teste3",
      description: "testando3"
    }, {
      name: "teste4",
      description: "testando4"
    }, {
      name: "teste2",
      description: "testando2"
    }, {
      name: "teste3",
      description: "testando3"
    }, {
      name: "teste4",
      description: "testando4"
    }]


        this.tableParams = {
    TodoGeneral: null
  };
  this.tableParams['TodoGeneral'] = new NgTableParams({}, {
    dataset: $scope.fsck,
  });

 $scope.test = function() {
    $scope.fsck[0].name = "mais non";
 }
}

Поскольку вы сохранили данные в $scope, $scope будет повторно инициализирован с вашими данными инициализации в вашем контроллере. Если вы хотите изменить, вы можете сохранить в localStorage, Cookie или $ rootScope.

Tan Duong 02.05.2018 11:47

@TanDuong Я попытался заменить на $ rootScope, но проблема все еще существует

Raphael 02.05.2018 11:51

Может, можно попробовать с sessionStorage?

Tan Duong 02.05.2018 12:28
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
3
605
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

используйте getData вместо dataset в вашем экземпляре NgTableParams. затем вы можете обновить свою таблицу через tableName.reload(), который вызывает метод getData.

Единственное, что здесь отличается, - это поведение при разбивке на страницы, которое вы, возможно, захотите перечитать в документации.

Вот рабочая рабочий пример: http://jsfiddle.net/vqxscmsu/17/

var demo = this;
// ...
demo.tableParams['TodoGeneral'] = new NgTableParams({}, {
    getData: function(){
       return $scope.fsck;
     }
});

$scope.test = function() {
    $scope.fsck[0].name = "mais non";
    demo.tableParams.TodoGeneral.reload();
}

Мне пришлось добавить кое-что в функцию getData (), чтобы сортировка, фильтры и разбивка на страницы работали. Но теперь проблема решена с помощью этого решения, спасибо!

Raphael 02.05.2018 14:35

Да, я вспомнил, но точно не помнил, что делать!

Sajjad Shahi 02.05.2018 17:22

Другие вопросы по теме