在 AngularJS 中存储表单之间的状态
Store status between forms in AngularJS?
我将尽可能具体。这就是我想要完成的:
我希望能够向用户展示哪种鞋子适合其需求。将向用户显示 4 个表单,一次一个。
我的想法是显示一个表单,一旦用户单击"下一步",保存该状态并显示下一个表单。填写完所有表单后,使用这些选择获取 API 并将结果返回给用户。
以下是我的问题:
- 我应该在哪里存储他的选择的状态?饼干?会期?
- 我将如何组织 Angular 以使所有这些表单一个接一个地显示?有什么资源可以作为灵感吗?
顺便说一句,我正在使用Rails作为后端。
我的问题基于本教程:http://code.realcrowd.com/the-wonderful-wizard-of-angularjs/
我看到他在提交时使用 saveState(),但我不确定该函数的定义在哪里。
由于应用是角度 SPA,因此可以使用角度服务来存储用户所做的选择的状态。此状态将一直持续到用户显式刷新浏览器 (F5) 为止。
创建类似
angular.factory('shoeSelectionState',function() {
var states=[{selection:{}},{selection:{}},{selection:{}},{selection:{}}];
return states;
});
在控制器中注入此服务,
angular.controller('MyController', function(shoeSelectionState) {
$scope.states=shoeSelectionState;
});
并将状态数组绑定到每个表单元素,如下所示
<input type='text' ng-model='states[0].selection.size' name='size'>
如果要在页面刷新时保留数据,请尝试使用sessionStorage
而不是localStorage
,因为当用户关闭选项卡时,它会自动清除。上面提到的服务可以将内容持久化到存储。
您可以按照 @sumain-bogati 的建议使用 localStorage,但您也可以轻松地执行此操作,而无需重新加载任何页面。 你需要的是一个带有控制器的容器,该控制器将存储用户的选择(即模型),然后使用 ngShow 或 ngRoute 显示每个页面。 下面是一些示例代码:
三个页面和一个模型的 Plnkr 示例
无需调用第四页,而是调用一个函数,该函数将启动对后端 API 的$http调用以提交模型值。
- 在Knockoutjs中的ViewModels之间共享变量状态
- 设置两个反应组件之间状态的正确方式
- new Datamap() 在调用之间保持内存的共享状态
- 在aspx页面c#之间传递/引用/发送变量/会话状态
- angular ui路由器卡在两个状态之间
- 在角度上不同控制器之间共享状态
- 两个类之间的状态
- UI 路由器 - 在状态之间转换时记住滚动位置
- 在 React/Redux 中管理同级组件之间的滚动状态
- 在状态之间传递对象
- JavaScript-使用sessionStorage保存文档之间共享的复选框状态
- 小黄瓜-在场景之间保持状态
- Ember JS中控制器之间共享状态的正确方式
- 如何在 CSS3 中的动画之间保持状态
- 使秒表在请求之间处于活动状态
- 在两个组件之间传输状态
- 如何使用 Angular JS 在状态之间导航
- 在两个或多个 UL 列表之间切换,如果单击一个列表,则其他列表会自动以初始状态返回,就像从未单击过一样
- 离子 - 在状态之间移动时,页面内容位于屏幕外部
- 如何在路由更改之间维护视图(控制器)状态