在访问“详细信息”页面时在“列表”页面上持久保存数据

问题描述:

我是一个有角度的新手,请耐心等待。在访问“详细信息”页面时在“列表”页面上持久保存数据

我一直在试图做一段时间,并不知道如何去做。

我有三个(1抽象父)的状态,像这样:

.state('recipes', { 
    url: '/recipes', 
    abstract: true, 
    template: '<ui-view/>' 
    }) 
    .state('recipes.listing', { 
    url: '/listing', 
    templateUrl: '/modules/recipes/client/views/recipes.listing.html', 
    controller: 'RecipesController', 
    controllerAs: 'vm', 
    data: { 
     pageTitle: 'Recipes' 
    } 
    }) 
    .state('recipes.details', { 
    url: '/details', 
    templateUrl: '/modules/recipes/client/views/recipes.details.html', 
    controller: 'RecipesDetailsController', 
    controllerAs: 'vm' 
    }); 

从列表页面,用户,他们可以从选择列表..当从列表中选择他们访问的详细信息页面通过$ state.go()。现在,当他们按下“后退”按钮时,他们会回到列表页面,但他们查询的所有数据现在都消失了。我能想到的唯一方法就是将页面转换为视图并将它们插入到1个状态,然后显示/隐藏它们,但是我觉得这不是Angular方式。

在此先感谢。

+0

使用服务来存储任何需要复制视图时用户返回 – charlietfl

+0

@charlietfl这是另一种解决方案,我已经遇到。我感觉这可能是另一条好路线。我不知道为什么,但我希望有一个更优雅的'角'解决方案 –

+0

这是角度的方式。当您离开视图时,控制器实例不见了,但服务是单例 – charlietfl

我建议以RESTfull方式使用路由。例商家资讯页面的路径可能是:

.state('recipes', { 
    url: '/recipes', 
    templateUrl: '/modules/recipes/client/views/recipes.listing.html', 
    controller: 'RecipesController', 
    controllerAs: 'vm', 
    data: { 
     pageTitle: 'Recipes' 
    } 
}) 

而对于细节的路线:

.state('recipes.details', { 
    url: '/recipes/:recipeID/details', 
    templateUrl: '/modules/recipes/client/views/recipe.details.html', 
    controller: 'RecipesDetailsController', 
    controllerAs: 'vm' 
    }); 

而且你的房源页面,您可以添加基于ID链接,以达到每个项目的详细信息页面。如果您使用的桌子,你的表身应被看作是这样的:

<tbody> 
    <tr ng-repeat= "recipe in recipes"> 
     <td><a ng-href="#!/recipes/{{::recipe._id}}/details"></a></td> 
    </tr> 
</tbody> 
+0

我不明白这是如何解决问题的。这看起来像我们只是重新组织页面。我不确定这是否解决了我提出的问题 –

+0

遇到从列表中选择一个项目时,它会进入该项目的详细信息页面,因为可以为所选项目唯一构建路线,而不会在一个状态中隐藏其他项目。 (我认为更有角度的方式) –