Передача результата функции java script в Angular ng-table

#javascript #json #angularjs

#javascript #json #angularjs

Вопрос:

У меня есть Angular ng-table, где я загружаю данные Json в переменную $data и отображаю в таблице.

 function ngTable(){
var app = angular.module('main', ['ngTable']).
controller('DemoCtrl', function($scope, ngTableParams) {
    var data = [{name: "Moroni", age: 50},
                {name: "Tiancum", age: 43},
                {name: "Jacob", age: 27},
                {name: "Nephi", age: 29},
                {name: "Enos", age: 34},
                {name: "Tiancum", age: 43},
                {name: "Jacob", age: 27},
                {name: "Nephi", age: 29},
                {name: "Enos", age: 34},
                {name: "Tiancum", age: 43},
                {name: "Jacob", age: 27},
                {name: "Nephi", age: 29},
                {name: "Enos", age: 34},
                {name: "Tiancum", age: 43},
                {name: "Jacob", age: 27},
                {name: "Nephi", age: 29},
                {name: "Enos", age: 34}];

    $scope.tableParams = new ngTableParams({
        page: 1,            // show first page
        count: 10           // count per page
    }, {
        total: data.length, // length of data
        getData: function($defer, params) {
            $defer.resolve(data.slice((params.page() - 1) * params.count(), params.page() * params.count()));
        }
    });
});
}
 

Кроме того, у меня есть функция Java Script, возвращающая некоторые другие данные Json — функция вызывается при нажатии кнопки.

 function ReturnJson() {
 var json = []; 
 $('body').on('click','button#test', function(){
   var id = $(this).attr("value").val();
   json = id;
  });
 return json;
}
 

Как мне заменить содержимое данных var на ReturnJson() каждый раз при нажатии кнопки?

Ответ №1:

Простое назначение будет работать, но не забудьте перезагрузить сетку:

 $scope.loadData = function () {
  $scope.data = $scope.ReturnJson();
  $scope.tableParams.reload();
}

$scope.ReturnJson = function () {
  var json = [{name: "bb", age: 200},{name: "aaa", age: 100}];
  return json;
}
 

Вот рабочая демонстрация: http://plnkr.co/edit/Jw41uCmHGAfjkuoLIQor?p=preview

Комментарии:

1. Я не уверен, как воспользоваться вашим решением, потому что моя функция java script вызывается при событии Jquery onclick, и внутри есть некоторый ajax-запрос… Но определенно 1 за конструктивный ответ.

2. Я предлагаю вам использовать angular ng-click для вызова функции. В Angular есть $http для ajax. На самом деле проще не смешивать angular и jquery.