2014-11-06 3 views
0

Я довольно новичок в работе с угловыми js и не совсем уверен, как правильно использовать термины Google.Обновление данных в angularJS

У меня в основном есть html-страница, привязка к контроллеру. Эта страница будет загружать данные из mysql.

в мой контроллер, у меня есть код, как это когда страница загрузки:

thresholdNameSpace.controller("ThresholdController", ['$scope','$http', function ($scope, $http){ 
    $http.get('http://something.appspot.com/met').success(function(data){ 
    $scope.messages = data; 
}]); 

Существует функциональность на странице, добавить новую запись в базу данных. Как обновить контроллер, чтобы после добавления нового содержимого в базу данных он автоматически отображался?

, что ключевое слово должно я искать в angularjs перспективе

+1

Угловой делает это сам, это один из его центральных пунктов. Прочтите руководство по привязке данных в Angular: https://docs.angularjs.org/guide/databinding – yerforkferchips

ответ

0

ну просто раздвинуть данные на сервер и отправить ответ обратно ... грубой силы подход будет отправить обратно все данные обратно, или просто добавить текущее «сообщение» в конце сообщения объекта

thresholdNameSpace.controller("ThresholdController", ['$scope','$http', function ($scope, $http){ 

    // get data 
    $http.get('http://something.appspot.com/met').success(function(data){ 
     // assuming messages is an array 
     $scope.messages = data; 
    }); 

    // create a function to push data up to the db, then update the view on success or failure appropriately 
    $scope.updateDatabase = function(param1, param2, param3...){ 
     var parameters = { 
      name: param1, 
      date: param2, 
      message: param3 
     } 
     $http.get('http://something.appspot.com/metUpdate', parameters).then(function(successResponse){ 
      console.log('successResponse', successResponse); 
      if($scope.messages) 
       $scope.messages.push({message: param3, person: param1, sent: param2}); // your object added to array 
     }, function(failureResponse){ 
      console.log('failureResponse', failureResponse); 
      // you can also push a error object which will be processed on the front end for proper display 
      $scope.messages.push({error: failureReason.data.errorMessage}); 
     }); 

    } 

}]); 
+0

база данных может быть обновлена ​​от другого пользователя ... – Thierry

0

Угловой автоматически обновляет HTML, вы просто должны обновить $ scope.messages из базы данных. Например, вы можете получить данные каждые 30 секунд с интервалом $. Что-то вроде этого:

var update = function() { 
    $http.get('http://something.appspot.com/met').success(function(data){ 
    $scope.messages = data; 
    } 
} 
$interval(update, 30000) 

Не забудьте вводить $ интервал в контроллере.

+0

Не могли бы вы сказать, что это немного грубая сила и неэффективна? Кроме того, при выходе из страницы необходимо обязательно очистить интервал. – SoluableNonagon

+0

Конечно, @EliteOctagon, это просто пример, его нужно адаптировать ... Я не знаю, сколько «сообщений» находится в db, сколько пользователей и т. Д. Лучше будет добавлять только новые сообщения, конечно. – Thierry

Смежные вопросы