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