角度服务复制数据

Angular service duplicating data

本文关键字:数据 复制 服务      更新时间:2023-09-26

我使用的是Ionic框架,我有两个视图,一个用于我的所有商店,另一个用于商店详细信息。两者都在从服务读取数据。我的问题是,当我点击一个商店并返回时,所有的商店都会再次追加。

这是一个带有我的代码的plnkr

谢谢!


编辑:

在我看到的答案中,一个解决方案是在get函数中添加数组,这样可以停止重复的数据,但如果我想读取数组的对象呢。现在,get函数中的数组如下所示:http://plnkr.co/edit/Ga8RVpwOvTnl4qkRVaWT?p=preview

您的stores数组只实例化过一次,但每次调用getStores方法时都会将其推入。

看看这个plunkr:http://plnkr.co/edit/J6wnDEYDLPT5tsG1VYey?p=preview

angular中的服务/工厂是单例的,所以当您有下面的代码时,您将为每个应用程序初始化存储阵列一次,但每次调用get时,您都会将其添加到其中。

var stores = [];
return {
    get: function () {
        stores.push(

要解决这个问题,您应该在get函数中定义stores数组,如下所示:

return {
    get: function(){
        var stores = [];
        stores.push(...

为了保留数组,请在get函数之外声明数组,但在将其他项推送到数组之前清除该数组。

var stores =[]; //declared outside get function so it will persist throughout the service
return {
    get: function(){
        stores = []; //reset upon get so data won't be duplicated
        stores.push(...