角UI-Router最佳实践:在命名视图之间共享数据

问题描述 投票:0回答:0
form

(左侧呈现)和一个简单的

list

(在右侧呈现)。 form用于编辑甚至创建列表的新项目(此操作是通过服务进行的,请呼叫) list

显示了所有项目,我可以选择其中一个,然后单击“编辑”,然后该项目转到表单,我将能够操纵/更新。 我的代码是我的代码:

.state('mt.demos', { abstract: true, url: '/demos', views : { 'container@' : { templateUrl: '....demos.html' } } }) .state('mt.panel', { url: '', views: { '[email protected]': { templateUrl: '...form.html', controller : 'formController', controllerAs : 'vm', }, '[email protected]': { templateUrl: '...list.html', controller : 'listController', controllerAs : 'vm', } } })

到目前为止,我最终得到了这两个选项:

为共享数据创建服务(这似乎是由于其单例行为而是最可接受的答案 - 但在此帖子结尾处查看

注1。

创建父控制器,因此每个嵌套状态都可以访问列表或要编辑的项目之类的父属性。因此,当我单击“编辑项目”时,ListController更新了父范围的范围,并且将使用此数据更改FormController。

注:当然要检索列表并更新项目,我已经使用了一个名为DemoService的服务。此服务仅用于AJAX请求。因此,如果最好的决定是上面显示的选项1,我相信我应该通过新建议创建一项新服务,对吗?否则将一些本地变量存储在同一服务中还不错。
这项新服务将具有列表和项目本身,因此当我单击编辑时,我将更新服务“项目”属性?

  1. 我认为您已经有一个使用服务来存储数据的答案。 about带有新建议的新服务,虽然我不确定“提案”的含义,但我假设您指的是带有当前不同字段的其他列表?
  2. 在这种情况下取决于您的代码可重复使用的方式。如果您的表格足够相似,或者您可以概括它,那么共享同一服务可能是可以的,因此您不必重写功能。列表和所选项目可以存储为服务中的不同变量。
  3. 或者,您还可以将它们存储在不同的服务中,并在另一个服务中写下它们的共同功能。

angularjs angular-ui-router
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.