【问题标题】:Angular service duplicating dataAngular服务复制数据
【发布时间】:2014-05-30 08:56:52
【问题描述】:

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

这是plnkr 和我的代码

谢谢!


编辑:

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

【问题讨论】:

    标签: javascript angularjs ionic-framework


    【解决方案1】:

    Angular 中的服务/工厂是单例的,因此当您拥有下面的代码时,您将为每个应用程序初始化一次 stores 数组,但每次调用 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(...
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-06
      • 2019-08-02
      • 2022-01-08
      • 2021-01-01
      • 2014-12-02
      • 2016-02-04
      • 2017-08-31
      • 2018-10-22
      相关资源
      最近更新 更多