VueFire 监视空数组属性

Posted

技术标签:

【中文标题】VueFire 监视空数组属性【英文标题】:VueFire watch for empty array property 【发布时间】:2019-11-15 09:20:04 【问题描述】:

四处寻找解决我的问题的方法!

我尝试让 Vue.Draggable 与 VueFire 一起工作。我有一些带有卡片的列表,可以在它们之间拖动、排序、克隆等等。虽然列表中填充了卡片,但 Vue.Draggable 可以完美运行,它会监视变化,触发魔法等事件。

这是有效的 JSON:

categories: [
  name: "todo",
  cards: ["second","first","second"]
,
  name: "doing"
  cards: ["first","fourth","second"]
,
  name: "done",
  cards: ["second", "fourth","first","third"]
]

当列表中的一个为空时,问题就出现了。我们都知道 Firebase 不存储空属性,这就是为什么 Vue.Draggable 不能监视不存在的属性。比如这样:

categories: [
  name: "todo",
  cards: ["second","first","second"]
,
  name: "doing"
  // missing cards property because it's empty
,
  name: "done",
  cards: ["second", "fourth","first","third"]
]

cards 属性应该通过将项目拖到列表中来填充值,但是因为 cards 不存在 Vue.Draggable 无法监视该列表中的更改,也无法触发事件。

有没有办法创建某种占位符或中间件来模拟那个空数组?或者在这种情况下还有哪些其他可能的解决方案?

这是一个小的JSFiddle。

谢谢!

【问题讨论】:

【参考方案1】:

如果 firebase 没有返回任何内容,为什么不初始化 cards 属性?

categories: [
  name: "todo",
  cards: ["second","first","second"]
,
  name: "doing",
  cards: firebaseCollectionProperty || []
,
  name: "done",
  cards: ["second", "fourth","first","third"]
]

【讨论】:

以上是关于VueFire 监视空数组属性的主要内容,如果未能解决你的问题,请参考以下文章

Vue2 和 Vue3 中的 watch 用法

Vue--》计算属性与监视(侦听)属性的使用

vue的计算和监视属性,附一小实例

Vue之监视属性

vue3中计算属性与监视

vue计算属性computed和监视器watch的使用