当用户在Angular中远离页面导航时保留表单数据

时间:2015-07-28 04:40:03

标签: javascript angularjs

我想保留在表单中输入的数据,以便在用户单击后退按钮然后返回到表单时,输入的信息仍会显示在相应的字段中。我已经尝试使用此Stack Overflow答案作为模型,但我没有运气:https://stackoverflow.com/a/16806510/640508

我正在使用Controller As语法。

这是我改编的代码:

控制器:

angular.module('myApp')
   .controller('ContactFormCtrl', ['formMemory', '$http', function (formMemory, $http) {
var contactForm = this;
contactForm.contact=formMemory;
formMemory.set();
formMemory.get();
// . . . 
}]);

服务:

angular.module('formMemory.fact', [])
    .factory('formMemory', function () {

    var contact = {};

    return {
      get: function () {
        return contact;
      },
      set: function (value) {
        contact = value;
      },
      reset: function () {
        contact = {};
      }
    };

HTML:

<h1><small>ContactInformation</small></h1>
<form name="myForm" novalidate >

   <div class="row">
    <div class="col-sm-4 form-group">
           <label class="control-label" for="first-name">First Name</label>
           <input type="text" id="first-name" name="firstName" ng-model="contactForm.contact.firstName"
           placeholder="First Name" class="form-control">
     </div>
// . . . 

app.js:

angular.module('myApp', [
'formMemory.fact',
  //. . . 
]);

1 个答案:

答案 0 :(得分:0)

工厂return false返回一个匿名对象,附加了3个函数。您没有使用正确的语法来访问这些函数。

要访问保存的数据,您需要将控制器变量设置为$(document).on('change', '#images', function(){ files = this.files; size = files[0].size; if (size < 1000141) { return true; // exit(); // end; } alert('Please upload less than 1mb file'); return false; }); //rest of your code 函数的返回值,如下所示:

formMemory

如果您离开时保存数据,则应将get()作为参数传递给contactForm.contact = formMemory.get(); ;最有可能的是,您可以在contact

中执行此操作
set(value)