在firebase对象中切换布尔值

时间:2018-01-04 19:49:38

标签: javascript firebase firebase-realtime-database

我使用角度4和firebase与angularFire2, 我在firebase中有一棵看起来像这样的树

{
"monday": {
    "9": true,
    "10": true,
    "11": true,
    "12": true,
    "13": true,
    "14": true,
    "15": true,
    "16": true,
    "17": true,
    "18": true,
    "19": true
},
"tuesday": {
    "9": true,
    "10": true,
    "11": true,
    "12": true,
    "13": true,
    "14": true,
    "15": true,
    "16": true,
    "17": true,
    "18": true,
    "19": true
   },
}...

每个'时间'插槽I渲染按钮,我想在angularFire中完成的是在点击时切换布尔值。

代码我已尝试

blockTime(time: number): void {
        const idx = _.indexOf(this.times, time);
        if (idx !== -1) {
                this.times.splice(idx, 1);
        } else {
                this.times.push(time);
        }
    }

///
this also
blockTime(time: number) {
  this.times[time] = !(this.times[time] || false);
}

我知道我离开了!

1 个答案:

答案 0 :(得分:0)

很难确定问题是什么,但最小功能本身似乎工作正常。



var json = {
  "monday": {
    "9": true,
    "10": true,
    "11": true,
    "12": true,
    "13": true,
    "14": true,
    "15": true,
    "16": true,
    "17": true,
    "18": true,
    "19": true
  },
  "tuesday": {
    "10": false,
    "11": true,
    "12": true,
    "13": true,
    "14": true,
    "15": true,
    "16": true,
    "17": true,
    "18": true,
    "19": true
   }
};

function toggleTime(day, time) {
  json[day][time] = !(json[day][time] || false);
}
console.log(json);
toggleTime("monday", 9);
toggleTime("tuesday", 9);
toggleTime("tuesday", 10);
console.log(json);




问题更可能在于如何调用函数或如何绑定到Angular。请确保您的问题包含重现问题所需的所有代码。这样做的一个好方法是在像jsbin这样的工具中重现问题(因为使用Firebase数据库的编码无法在Stack Overflow片段中运行)。