对不起,我发现很难说出我正确的问题..
我有一个名为feedCounter
的数组和一个名为postFeed
的数组。我想显示feedCounter
的长度,当用户点击它postFeed
时,feedCounter
等于feedCounter
,但当postFeed
获得新元素feedCounter
时不用它来更新......
我正在做的是将snapshot
设置为firebase中的this.subscription.on('child_added', (snapshot) => {
this.feedCounter.push(snapshot.val());
});
:
html
然后在我的<div (click)="postFeed = feedCounter;">{{feedCounter?.length}}</div>
<post *ngFor="let post of postFeed.reverse()"></post>
我这样做:
postFeed
问题是,在我第一次点击feedCounter
div
后,postFeed
似乎被绑定到php code
自动更新,我不想要..
我该如何解决这个问题?谢谢!
答案 0 :(得分:1)
而不是在点击处理程序中执行此操作:
postFeed = feedCounter
您需要创建一个feedcounter的副本;否则,你使它们都指向同一个对象(同一个数组)。所以,
postFeed = copy(feedCounter)
现在你必须实现复制功能,有几种方法可以做到,你可以google它(如何复制数组javascript),使用像lodash这样的lib,或者自己实现它。
一个选项是JSON解析和解析:
copy = (arr) => JSON.parse(JSON.stringify(arr));
如果你需要处理循环依赖等,你需要决定你是浅层还是深层。
答案 1 :(得分:1)
根本原因是您指定了NotificationCenter.default.addObserver(self, selector: #selector(screenRefreshedFunction), name: NSNotification.Name(rawValue: "app has returned from background"), object: nil)
,因此两个变量都将引用同一个数组,并将新元素添加到feedCounter,就像将新元素添加到postFeed一样。要分离那些你应该克隆它,然后分配如下:postFeed = feedCounter;