加载重新加载页面时如何删除数组中的所有对象?

Posted

技术标签:

【中文标题】加载重新加载页面时如何删除数组中的所有对象?【英文标题】:How do i remove all objects inside an array when i load the reload the page? 【发布时间】:2017-10-23 07:02:47 【问题描述】:

我正在使用 ionic2 (Angular2& typescript)。目前我正在研究一种匹配算法,如果找到匹配项,它会将结果推送到一个数组中,该数组也位于对象内部。但是,如果我返回上一页并尝试进行另一场比赛。它将显示上一场比赛的结果。因此,我希望能够在继续匹配部分之前清除数组/对象内的所有结果。到目前为止,我尝试使用 ionwillEnter ,它只是给了我一个空白页。我尝试将它放在构造函数中,但它不起作用。下面是代码

填充对象

constructor(public navCtrl: NavController, public navParams: NavParams,public testService: TestService,public cameraService: CameraService,public toastCtrl: ToastController,public auth : AuthProvider,af : AngularFire) 

    this.objUser.length = 0; //trying to empty out all the elements/objects inside the array 

    var ref = firebase.database().ref('/user/'+ firebase.auth().currentUser.uid+'/profile/');
    ref.on('value',
      ((data)=>

        var users = data.val();
        var keys = Object.keys(users);
        console.log(keys);

        for(var y =0; y<keys.length; y++)
          var x = keys[y];

          this.objUser[y] = userName:'', userAllergies:[], resultWarning:[], resultUnsafe:[];  //dynamically create objects based on the y value
          console.log(users[x].allergies);

          this.objUser[y].userName = users[x].name;
          this.objUser[y].userAllergies.push(users[x].allergies);
          console.log('userAllergies',this.objUser[y].userAllergies);
          console.log(this.objUser[y].userAllergies.length);

        

        console.log(this.objUser);
        console.log(this.objUser.length);
      ),
      this.errData);
  

因此,无论如何我可以删除数组中的所有元素并重新初始化我加载页面的所有内容吗?任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

'on' 方法会在 firebase 节点中的每次更改(即编辑/添加/删除)时触发。因此,请尝试清除 'on' 方法内部的数组元素,但不要清除它之外的元素。

【讨论】:

以上是关于加载重新加载页面时如何删除数组中的所有对象?的主要内容,如果未能解决你的问题,请参考以下文章

如果 url 中的所有更改都是哈希,如何强制页面重新加载?

使用 fetch 后如何重新加载页面

如何在不重新加载页面的情况下以角度 2 设置或删除当前路线中的 queryParams

Laravel - 创建一个会话数组并在每次重新加载页面时添加到它

如何将自定义数组保存/重新加载到 plist

如何在 HTMX 中重新加载页面刷新时的所有部分