【发布时间】:2016-11-26 19:46:14
【问题描述】:
我正在开发一个 AngularJS 1 (+ Ionic + ui-router) 单页应用程序。除其他外,该应用程序允许“CRUD”员工和公司。
我在“编辑员工”页面上苦苦挣扎。此页面显示名字和姓氏字段,并有一个按钮用于选择员工所在的公司。单击该按钮时,将打开一个新视图,列出所有现有公司。然后,用户可以选择一个以将其分配给员工,然后返回之前的屏幕(员工编辑),然后显示(只读)公司名称。
我的问题是,当返回到“编辑员工”视图时,它的控制器被重新加载,因此对名字和姓氏所做的更改会丢失,因为控制器从从数据库加载员工信息开始。
总结一下发生了什么:
用户打开编辑员工视图
编辑控制器从数据库加载员工数据并填充视图
用户将名字更改为新值(例如从“John”更改为“Allan”)
用户点击“选择公司”按钮
公司列表视图打开,并显示公司列表
用户在列表中选择了一家公司
控制器通过服务将其存储为“当前公司”全局变量,然后返回编辑员工视图
编辑控制器再次启动,重新加载数据库中的数据,并用 John 重新填充名字。它还读取公司全局变量以显示其名称。
因此对“Allan”的更改丢失:-(
所以我的问题是:管理这种编辑的最佳做法是什么?
另外,如果您有更好的方法将公司从公司列表视图转移到编辑员工视图,而不是使用全局变量,我将不胜感激。
顺便说一句,我不想在打开公司列表之前保存员工更改,因为我想让用户最终完全取消他的编辑。
非常感谢您的帮助
【问题讨论】:
-
使用选择框让用户直接从编辑员工表单中选择公司。
-
感谢您的回答。这实际上是我首先做的,但我想添加增量搜索,并让用户可能创建一个新公司。所以出于 GUI 设计的原因,我希望有一个单独的视图。请问还有什么建议吗??再次感谢(顺便说一句,增量搜索可以与选择一起使用,但没有好看的 Ionic 小部件)
-
当离开编辑员工页面选择公司时,将其状态(即作为表单模型的员工对象)保存在服务的字段中,例如。当您从公司取货页面打包回来时,从您在服务中保存的状态恢复。不要使用全局变量来存储公司。将其存储在同一个服务中,或将其作为状态参数传递。
标签: angularjs angular-ui-router relationship