2015-04-02 2 views
1
var app = angular.module('TodoApp', []); 

app.controller('TodoCtrl', function($scope){ 

    $scope.todos = ['test']; 

    $scope.done = function(todo){ 
      var indexOf = $scope.todos.indexOf(todo); 
      if (indexOf !== -1) { 
       $scope.todos.splice(indexOf, 1); 
      } 
    }; 

    $scope.add = function() { 
      $scope.todos.push($scope.newTodo); 
      $scope.newTodo= ''; 
    }; 

}); 

Я новичок в angularjs и написала простой список дел. Я хочу, чтобы данные в $ scope.todos были динамическими, поэтому всякий раз, когда пользователь переходит на другую страницу моего сайта и возвращается обратно, он получает те же самые тодопыты, которые он ввел ранее. Я подумываю использовать переменную сессии PHP для хранения данных в ней и передать ее в угловое приложение, но я не знаю, как это сделать, или, может быть, эта логика не подходит. Я новичок в этом, поэтому любые новые идеи для этого будь офигенным.Как использовать переменную сеанса Php как Angular Js Data

ответ

1
  1. вы можете использовать cookie или local storage для хранения списка задач пользователя в

    • размер печенья макс небольшой, но достаточно, если вы не слишком много Todo

    • локального хранилища максимальный размер 5 мб. Вы можете попробовать эту угловую LIB https://github.com/grevory/angular-local-storage

  2. при использовании PHP session.if вы не хотите, чтобы сделать дополнительный вызов Ajax, вы должны повторить значение на странице.

сделать список todo глобальным var, используя echo json в вашем php-файле.

var g_todos = <?php echo json_encode($_SESSION['todo'] ?>;

в контроллере

if(typeof g_todos === 'object' && g_todos.length){ 
    $scope.todos = g_todos; 
}else{ 
    $scope.todos = []; 
} 

Я думаю, что использование печенья или LocalStorage лучше, второй метод является довольно некрасиво ....

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