Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在AngularJS中的表单之间存储状态?_Javascript_Ruby On Rails_Forms_Angularjs_Cookies - Fatal编程技术网

Javascript 在AngularJS中的表单之间存储状态?

Javascript 在AngularJS中的表单之间存储状态?,javascript,ruby-on-rails,forms,angularjs,cookies,Javascript,Ruby On Rails,Forms,Angularjs,Cookies,我会尽量说得具体一些。这就是我努力实现的目标: 我希望能够向用户展示,哪种鞋适合他们的需求。用户将看到4张表格,一次一张 我的想法是显示一个表单,一旦用户单击“下一步”,保存该状态并显示下一个表单。填写完所有表单后,使用这些选项获取API并将结果返回给用户 以下是我的问题: 我应该将他的选择状态存储在哪里?曲奇会议 为了让所有这些表格一个接一个地显示出来,我应该如何组织这些表格?我有什么可以作为灵感的资源吗 顺便说一句,我使用Rails作为后端 我的问题基于本教程: 我看到他在提交时使用了s

我会尽量说得具体一些。这就是我努力实现的目标:

我希望能够向用户展示,哪种鞋适合他们的需求。用户将看到4张表格,一次一张

我的想法是显示一个表单,一旦用户单击“下一步”,保存该状态并显示下一个表单。填写完所有表单后,使用这些选项获取API并将结果返回给用户

以下是我的问题:

  • 我应该将他的选择状态存储在哪里?曲奇会议
  • 为了让所有这些表格一个接一个地显示出来,我应该如何组织这些表格?我有什么可以作为灵感的资源吗
顺便说一句,我使用Rails作为后端

我的问题基于本教程:


我看到他在提交时使用了saveState(),但我不确定该函数是在哪里定义的。

您可以按照@sumain bogati的建议使用localStorage,但您可以在不重新加载任何页面的情况下轻松完成此操作。您需要的是一个带有控制器的容器,该控制器将存储用户的选择(即模型),然后使用ngShow或ngRoute显示每个页面。下面是一些示例代码:


与调用第四个页面不同,您可以调用一个函数,该函数将启动对后端API的$http调用,以提交模型值。

由于应用程序是angular SPA,您可以使用angular服务存储用户所做选择的状态。此状态将一直保持,直到用户显式刷新浏览器(F5)

创建一个服务,如

angular.factory('shoeSelectionState',function() {
   var states=[{selection:{}},{selection:{}},{selection:{}},{selection:{}}];
   return states;
});
在控制器中注入此服务

angular.controller('MyController', function(shoeSelectionState) {
   $scope.states=shoeSelectionState;
});
并将states数组绑定到每个表单元素,类似


如果要在页面刷新时保留数据,请尝试使用
sessionStorage
而不是
localStorage
,因为当用户关闭选项卡时,它会自动清除。上面提到的服务可以将内容持久化到存储。

您可以使用
localStorage
api。您需要数据来持久化吗。我的意思是,用户可以导航出页面并返回到第三个表单吗?只要用户单击一个表单上的提交并验证、
ng show
下一个表单、
ng hide
当前表单等,就可以将所有表单放在一个页面中。将所有答案存储在1
$scope
变量中(最有可能是散列)。最后,将哈希作为JSON发送到后端。1个控制器,多个验证功能。整体的,但是如果你不需要重用,就可以完成任务。谢谢Chandermani。我认为现在有道理了。但是,我想知道当用户提交表单时该怎么做。我知道AngularJS的思维方式是尽量不修改DOM。那么,提交时我该怎么做?表单的哪个操作,我会将新表单放入页面?您会在服务模型中不断收集信息,当您准备向服务器提交数据时,使用
$http
$resource
服务将数据作为json发布到服务器。是的,但在每个表单(或页面)之后,用户需要提交数据才能进入下一个表单,对吗?这是我关心的。我怎么去下一个表格?(用户单击“下一步”后如何处理数据,以及如何隐藏当前表单以显示下一个表单)不知道您的应用程序设计。但是您可以使用
ng视图
和路由服务从一个表单移动到另一个表单。Chandermani,但是如果我有N个表单,第一个表单的操作是什么?或者您正在考虑在没有表单的情况下放置这些元素?