A simple twilio app in rails and angular

messages.js 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. (function () {
  2. var app = angular.module('messages', ['restangular', 'templates']);
  3. app.controller('MessagesController', function($scope, Restangular){
  4. $scope.baseMessages = Restangular.all('messages');
  5. $scope.baseMessages.refresh = function(){
  6. $scope.baseMessages.getList().then(function(messages){
  7. $scope.messages = messages;
  8. })
  9. };
  10. $scope.baseMessages.remove = function(message){
  11. message.remove();
  12. $scope.baseMessages.refresh();
  13. };
  14. $scope.baseMessages.refresh();
  15. });
  16. app.directive('messageForms', function(){
  17. return {
  18. restrict: "E",
  19. templateUrl: 'message-forms.html'
  20. }
  21. });
  22. app.controller('MessageController', function($scope, $timeout){
  23. var timeout = null;
  24. var debounceUpdate = function(new_message, old_message){
  25. if(!new_message.id){
  26. if($scope['message__form'].$valid){
  27. if(timeout){
  28. $timeout.cancel(timeout);
  29. }
  30. timeout = $timeout(function(){
  31. $scope.baseMessages.post(new_message);
  32. $scope.baseMessages.refresh();
  33. }, 1000);
  34. }
  35. return;
  36. }
  37. if(new_message == old_message || $scope['message_' + new_message.id + '_form'].$invalid){
  38. return;
  39. }
  40. if(timeout) {
  41. $timeout.cancel(timeout);
  42. }
  43. timeout = $timeout(new_message.save, 1000);
  44. };
  45. $scope.$watchCollection('message', debounceUpdate);
  46. });
  47. })();