Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js EmberFire和嵌套数组_Ember.js_Firebase - Fatal编程技术网

Ember.js EmberFire和嵌套数组

Ember.js EmberFire和嵌套数组,ember.js,firebase,Ember.js,Firebase,我正在尝试我的第一个基于ember的项目,并将emberfire集成到其中以获得Firebase功能。我正在为另一个项目构建一个树菜单生成器 firebase数据库的json如下所示: { "default" : { "_type" : "arrayObject", "name" : "unnamed", "_name" : "default", "menus" : { "Top" : { "menu" : {

我正在尝试我的第一个基于ember的项目,并将emberfire集成到其中以获得Firebase功能。我正在为另一个项目构建一个树菜单生成器

firebase数据库的json如下所示:

    {
  "default" : {
    "_type" : "arrayObject",
    "name" : "unnamed",
    "_name" : "default",
    "menus" : {
      "Top" : {
        "menu" : {
          "2" : {
            "text" : "0-2",
            "actions" : {
              "_type" : "objectArray",
              "0" : {
                "action" : 3,
                "_type" : "object"
              }
            },
            "column" : 0,
            "color" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : 0,
              "a" : {
                "_type" : "object"
              },
              "r" : 0
            },
            "_type" : "object",
            "visibility" : "hidden",
            "page" : 0,
            "bgColor" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : 208,
              "a" : {
                "_type" : "object"
              },
              "r" : 208
            },
            "row" : 2,
            "id" : 2
          },
          "5" : {
            "text" : "0-5",
            "actions" : [ {
              "action" : 3
            } ],
            "column" : 0,
            "color" : {
              "b" : 0,
              "g" : 0,
              "a" : 255,
              "r" : 0
            },
            "_type" : "object",
            "visibility" : "hidden",
            "page" : 0,
            "bgColor" : {
              "b" : 208,
              "g" : 208,
              "a" : 255,
              "r" : 208
            },
            "row" : 5,
            "id" : 5
          },
          "12" : {
            "text" : "1-3",
            "actions" : {
              "_type" : "objectArray",
              "0" : {
                "action" : 3,
                "_type" : "object"
              }
            },
            "column" : 1,
            "color" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "_type" : "object",
            "visibility" : "hidden",
            "page" : 0,
            "bgColor" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "row" : 3,
            "id" : 12
          },
          "15" : {
            "text" : "1-6",
            "actions" : {
              "_type" : "objectArray",
              "0" : {
                "action" : 3,
                "_type" : "object"
              }
            },
            "column" : 1,
            "color" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "_type" : "object",
            "visibility" : "hidden",
            "page" : 0,
            "bgColor" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "row" : 6,
            "id" : 15
          },
          "8" : {
            "text" : "0-8",
            "actions" : {
              "_type" : "objectArray",
              "0" : {
                "action" : 3,
                "_type" : "object"
              }
            },
            "column" : 0,
            "color" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "_type" : "object",
            "visibility" : "hidden",
            "page" : 0,
            "bgColor" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "row" : 8,
            "id" : 8
          },
          "_type" : "objectArray",
          "7" : {
            "text" : "0-7",
            "actions" : [ {
              "action" : 3
            } ],
            "column" : 0,
            "color" : {
              "b" : 0,
              "g" : 0,
              "a" : 255,
              "r" : 0
            },
            "_type" : "object",
            "visibility" : "visible",
            "page" : 0,
            "bgColor" : {
              "b" : 208,
              "g" : 208,
              "a" : 255,
              "r" : 208
            },
            "row" : 7,
            "id" : 7
          },
          "17" : {
            "text" : "1-8",
            "actions" : {
              "_type" : "objectArray",
              "0" : {
                "action" : 3,
                "_type" : "object"
              }
            },
            "column" : 1,
            "color" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "_type" : "object",
            "visibility" : "hidden",
            "page" : 0,
            "bgColor" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "row" : 8,
            "id" : 17
          },
          "1" : {
            "text" : "0-1",
            "actions" : {
              "_type" : "objectArray",
              "0" : {
                "action" : 3,
                "_type" : "object"
              }
            },
            "column" : 0,
            "color" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : 0,
              "a" : {
                "_type" : "object"
              },
              "r" : 0
            },
            "_type" : "object",
            "visibility" : "hidden",
            "page" : 0,
            "bgColor" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : 208,
              "a" : {
                "_type" : "object"
              },
              "r" : 208
            },
            "row" : 1,
            "id" : 1
          },
          "4" : {
            "text" : "0-4",
            "actions" : {
              "_type" : "objectArray",
              "0" : {
                "action" : 3
              }
            },
            "column" : 0,
            "color" : {
              "b" : 0,
              "g" : 0,
              "a" : 255,
              "r" : 0
            },
            "_type" : "object",
            "visibility" : "hidden",
            "page" : 0,
            "bgColor" : {
              "b" : 208,
              "g" : 208,
              "a" : 255,
              "r" : 208
            },
            "row" : 4,
            "id" : 4
          },
          "11" : {
            "text" : "1-2",
            "actions" : {
              "_type" : "objectArray",
              "0" : {
                "action" : 3,
                "_type" : "object"
              }
            },
            "column" : 1,
            "color" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "_type" : "object",
            "visibility" : "hidden",
            "page" : 0,
            "bgColor" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "row" : 2,
            "id" : 11
          },
          "14" : {
            "text" : "1-5",
            "actions" : {
              "_type" : "objectArray",
              "0" : {
                "action" : 3,
                "_type" : "object"
              }
            },
            "column" : 1,
            "color" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "_type" : "object",
            "visibility" : "hidden",
            "page" : 0,
            "bgColor" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "row" : 5,
            "id" : 14
          },
          "6" : {
            "text" : "0-6",
            "actions" : [ {
              "action" : 3
            } ],
            "column" : 0,
            "color" : {
              "b" : 0,
              "g" : 0,
              "a" : 255,
              "r" : 0
            },
            "_type" : "object",
            "visibility" : "visible",
            "page" : 0,
            "bgColor" : {
              "b" : 208,
              "g" : 208,
              "a" : 255,
              "r" : 208
            },
            "row" : 6,
            "id" : 6
          },
          "0" : {
            "text" : "0-0",
            "actions" : {
              "_type" : "objectArray",
              "0" : {
                "action" : 3,
                "_type" : "object"
              }
            },
            "column" : 0,
            "color" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : 0
            },
            "_type" : "object",
            "visibility" : "hidden",
            "page" : 0,
            "bgColor" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : 208
            },
            "row" : 0,
            "id" : "0"
          },
          "9" : {
            "text" : "1-0",
            "actions" : {
              "_type" : "objectArray",
              "0" : {
                "action" : 3,
                "_type" : "object"
              }
            },
            "column" : 1,
            "color" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "_type" : "object",
            "visibility" : "hidden",
            "page" : 0,
            "bgColor" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "row" : 0,
            "id" : 9
          },
          "16" : {
            "text" : "1-7",
            "actions" : {
              "_type" : "objectArray",
              "0" : {
                "action" : 3,
                "_type" : "object"
              }
            },
            "column" : 1,
            "color" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "_type" : "object",
            "visibility" : "hidden",
            "page" : 0,
            "bgColor" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "row" : 7,
            "id" : 16
          },
          "3" : {
            "text" : "0-3",
            "actions" : {
              "_type" : "objectArray",
              "0" : {
                "action" : 3,
                "_type" : "object"
              }
            },
            "column" : 0,
            "color" : {
              "b" : 0,
              "_type" : "objectArray",
              "g" : 0,
              "a" : {
                "_type" : "object"
              },
              "r" : 0
            },
            "_type" : "object",
            "visibility" : "hidden",
            "page" : 0,
            "bgColor" : {
              "b" : 208,
              "_type" : "objectArray",
              "g" : 208,
              "a" : {
                "_type" : "object"
              },
              "r" : 208
            },
            "row" : 3,
            "id" : 3
          },
          "10" : {
            "text" : "1-1",
            "actions" : {
              "_type" : "objectArray",
              "0" : {
                "action" : 3,
                "_type" : "object"
              }
            },
            "column" : 1,
            "color" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "_type" : "object",
            "visibility" : "hidden",
            "page" : 0,
            "bgColor" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "row" : 1,
            "id" : 10
          },
          "13" : {
            "text" : "1-4",
            "actions" : {
              "_type" : "objectArray",
              "0" : {
                "action" : 3,
                "_type" : "object"
              }
            },
            "column" : 1,
            "color" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "_type" : "object",
            "visibility" : "hidden",
            "page" : 0,
            "bgColor" : {
              "b" : {
                "_type" : "object"
              },
              "_type" : "objectArray",
              "g" : {
                "_type" : "object"
              },
              "a" : {
                "_type" : "object"
              },
              "r" : {
                "_type" : "object"
              }
            },
            "row" : 4,
            "id" : 13
          }
        },
        "_type" : "object"
      },
      "_type" : "objectArray"
    },
    "id" : "default"
  },
  "_type" : "objectArray",
  "app2" : {
    "_type" : "arrayObject",
    "name" : "app2",
    "_name" : "app2",
    "menus" : {
      "Top" : [ {
        "text" : "0-0"
      } ],
      "_type" : "objectArray"
    }
  }
}
无论如何,我已经成功地使用了一个emberFire分支,它从我的初始数组中提供了一个emberFire对象。()

这很有效

我有一个嵌入的数组,我把它转换成另一个emberFire对象数组

我的代码:

我使用了与原始ObjectArray创建类似的行为,为嵌套在“ssApp”中的“ssMenus”数组创建了第二个,但它似乎没有填充来自Firebase的正确数据,路由器甚至没有使用空数组启动

正确的行为是当你点击一个“应用程序”时,应用程序的名称出现在底部(有效!),菜单的名称出现在旁边(无效)

无论如何,请救命

我明白了

  • 我正在手动编写子firebase引用。我通过最初的firebase对象找到了实现方法
  • 我没有将子引用封装在firebase对象中,而是尝试将它注入到不属于它的地方
  • 我试图创建第二条路线,但我不需要它
我可能也错过了别的东西。我认为自己是初学者,所以这是在扩展我的能力。

我原来的AppController

App.SsAppController = Ember.ObjectController.extend({
  needs: ["selected_ssApp", 'ssMenus'],

  selected: function(){
    return this.get('controllers.selected_ssApp.model') === this.get('model');
  }.property('controllers.selected_ssApp.model', 'model'),

  actions: {
    select: function(){
      var model = this.get('model');
      var menuList = this.get('controllers.ssMenus')
      Ember.debug("MenuList: "+ menuList);
      this.set('controllers.selected_ssApp.model', model);
      menuList.set('ref', new Firebase("https://menutest.firebaseio.com/jt-test/"+model.content._name+"/menus"));

    }
  }
});
App.SsAppController = Ember.ObjectController.extend({
  needs: ["selected_ssApp", 'ssMenus'],
    menus: function(){
        var model = this.get('model'),
        ref = model.get('ref');

        return EmberFire.ObjectArray.create({ ref: ref.child('menus')});
    },
  selected: function(){
    return this.get('controllers.selected_ssApp.model') === this.get('model');
  }.property('controllers.selected_ssApp.model', 'model'),
  actions: {
    select: function(){
      var model = this.get('model'),
      menusObj = model.get('menus');
      this.set('controllers.selected_ssApp.model', model);

        this.set('controllers.ssMenus.content', this.menus());
    }
  }
});
我的新的和改进的(阅读:工作)菜单控制器

App.SsAppController = Ember.ObjectController.extend({
  needs: ["selected_ssApp", 'ssMenus'],

  selected: function(){
    return this.get('controllers.selected_ssApp.model') === this.get('model');
  }.property('controllers.selected_ssApp.model', 'model'),

  actions: {
    select: function(){
      var model = this.get('model');
      var menuList = this.get('controllers.ssMenus')
      Ember.debug("MenuList: "+ menuList);
      this.set('controllers.selected_ssApp.model', model);
      menuList.set('ref', new Firebase("https://menutest.firebaseio.com/jt-test/"+model.content._name+"/menus"));

    }
  }
});
App.SsAppController = Ember.ObjectController.extend({
  needs: ["selected_ssApp", 'ssMenus'],
    menus: function(){
        var model = this.get('model'),
        ref = model.get('ref');

        return EmberFire.ObjectArray.create({ ref: ref.child('menus')});
    },
  selected: function(){
    return this.get('controllers.selected_ssApp.model') === this.get('model');
  }.property('controllers.selected_ssApp.model', 'model'),
  actions: {
    select: function(){
      var model = this.get('model'),
      menusObj = model.get('menus');
      this.set('controllers.selected_ssApp.model', model);

        this.set('controllers.ssMenus.content', this.menus());
    }
  }
});