Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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
Javascript 从静态json文件(只读)路由的主干应用程序?_Javascript_Backbone.js_Backbone Routing - Fatal编程技术网

Javascript 从静态json文件(只读)路由的主干应用程序?

Javascript 从静态json文件(只读)路由的主干应用程序?,javascript,backbone.js,backbone-routing,Javascript,Backbone.js,Backbone Routing,我正在构建一个只读主干应用程序,其中的数据(来自单个静态json文件)遵循某种建筑/校园结构。即: [{ "name": "Building Name", "id": "building", "floors":[{ "name":"Ground Floor", "rooms":[{ "name": "Room 1" }, { "name": "Room 2"

我正在构建一个只读主干应用程序,其中的数据(来自单个静态json文件)遵循某种建筑/校园结构。即:

[{
    "name": "Building Name",
    "id": "building",
    "floors":[{
        "name":"Ground Floor",
        "rooms":[{
            "name": "Room 1"
        },
        {
            "name": "Room 2"
        }]
    },
    {
        "name":"First Floor",
        "rooms":[{
            "name": "Room 3"
        },
        {
            "name": "Room 4"
        }]
    }]
    },
    {
    "name": "Another Building",
    "id": "building_2",
    "floors":[{
        "name":"Ground Floor",
        "rooms":[{

        }]
    },
    {
        "name":"First Floor",
        "rooms":[{

        }]
    }]
}]
我目前设置了一个基本应用程序,它显示默认“”路线上每栋建筑的建筑和楼层列表

我想使用路由器,以便APP/#buildingId/显示具有“buildingId”的建筑物的楼层列表,APP/#buildingId/#floorId显示相关的房间列表等

JSBIN我的当前代码(没有data.json)

很多代码可能已经过时,但我尝试了不同的方法来构建模型/集合。这个应用程序将永远是只读的,这就是为什么我使用静态文件


类似问题:


提出的解决方案根本不使用路由器

这就是你想要的吗

// code simplified and no tested
App.Router = Backbone.Router.extend({

  routes: {
    "/APP/:buildingId/:floorId":  "showRooms",
    "/APP/:buildingId":           "showFloors"
  },

  showRooms: function( buildingId, floorId ) {
    // code to show the rooms
  },

  showFloors: function( buildingId ) {
    // code to show the floors
  },

});

还是我遗漏了什么?

是的,差不多就是这个。我现在已经到了这个阶段,在这个阶段,我玩路由器的功能,但我无法找出正确显示楼层或房间的代码。参见更新的jsbin:这类作品。在路径APP/#0上,它是第一个构建的id,它正确返回对象,但除了name之外,我无法访问模板中的任何属性。所有属性(名称除外)返回错误:“未捕获引用错误:未定义id”。如果我知道您正在寻找一个非常个人化的案例的完整实现,那么我可以使用:'singleBuilding.models[0].get('name')@MiloszFalinski从控制台访问所有属性。恐怕这超出了StackOverflow的范围。我们可以帮助您解决与任何具体业务逻辑无关的更抽象和具体的问题。谢谢,我不确定,但这是可以理解的。虽然代码看起来有点黑,但我现在基本上已经弄明白了。既然你的答案和我的答案差不多,我很高兴把这个问题标记为已回答。