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
如何使用视图模型控制器方法解析和绑定backbone.js中的复杂JSON_Backbone.js_Handlebars.js_Marionette_Backbone Views_Backbone Routing - Fatal编程技术网

如何使用视图模型控制器方法解析和绑定backbone.js中的复杂JSON

如何使用视图模型控制器方法解析和绑定backbone.js中的复杂JSON,backbone.js,handlebars.js,marionette,backbone-views,backbone-routing,Backbone.js,Handlebars.js,Marionette,Backbone Views,Backbone Routing,我使用一个复杂的JSON结构作为一个Ajax调用的结果。这里我需要在一个父模型中使用许多不同类型的嵌套模型。对于每个人,我使用一个EmployeeContext。我需要这个作为我的父母模型。 在这个EmployeeContext中,我需要许多具有关联模型的不同集合。示例:我有一个名为expenseContextCollection的集合,其模型为expense,模型为travel。 我需要显示每个模型的详细信息,并且需要更新相同的模型并保存回mongo数据库 目前,我正在使用一个用于模型Empl

我使用一个复杂的JSON结构作为一个Ajax调用的结果。这里我需要在一个父模型中使用许多不同类型的嵌套模型。对于每个人,我使用一个EmployeeContext。我需要这个作为我的父母模型。 在这个EmployeeContext中,我需要许多具有关联模型的不同集合。示例:我有一个名为expenseContextCollection的集合,其模型为expense,模型为travel。 我需要显示每个模型的详细信息,并且需要更新相同的模型并保存回mongo数据库

目前,我正在使用一个用于模型EmployeeModel.js的文件,一个用于视图EmployeeView.js的文件,一个用于模板EmployeePage.html的文件。 在EmployeeView.js文件中,我将设置ajax调用模型的结果

initialize: function(instance) {
  this.model.set({
    "travelContext": ajaxResponse.EmployeeContext.travellContextCollection
  });
  this.model.set({
    "expenseContext": ajaxResponse.EmployeeContext.expenseContextCollection
  });
  this.render();
}
但是我需要这个travelContext作为一个主干集合,这样我就可以循环使用它并从中获取每个旅行模型

如何使用backbone.js中的模型视图收集方法处理这种情况

以下是JSON结构的一个示例:

{
    "EmployeeContext": {
        "expenseContextCollection": [{
            "currencyType": "INR",
            "empID": "00123456",
            "imageID": "d69ce74a9b4e075d2111cf0619e27c503d",
            "toDate": "11-12-2015",
            "billDate": "11-12-2015"
        }, {
            "currencyType": "INR",
            "empID": "00123456",
            "imageID": "ab2f78d9f9e7897b4a11c5bc82618d09f4",
            "toDate": "25-01-2016",
            "billDate": "20-01-2016",
        }],
        "claimContextCollection": [],
        "travellContextCollection": [{
            "empID": "00123456",
            "isOneWay": true,
            "eligibility": "true",
            "createTravelRequest": {
                "purposeOfTravelDetailsCollection": [{
                    "isPrimary": "true",
                    "purposeOfTravel": "Trans",
                    "leadOpportunity": "BAA12346",
                    "account": "BASS"
                }],
                "travelDetailsCollection": [{
                    "travelToCity": "BANGALORE",
                    "travelType": "DTR",
                    "travelTime": "",
                    "travelFromCity": "CHENNAI",
                    "checkoutDate": "25-01-2016",
                    "travelDate": "20-01-2016",
                    "travelTo": "INDIA",
                    "travelFrom": "INDIA"
                }],
                "Preference": {
                    "empnum": "00123456",
                    "employeeProfilePreference": {
                        "emergencyContacCity": "9412345678",
                        "travelSeatPreference": "aisle",
                        "smsNotification": "true",
                        "emergencyContactNumber": "9412345678",
                        "frequentFlierPreference": {
                            "frequentFlierNo": "EJK7861",
                            "frequentFlierAirlines": "Virgin"
                        },
                        "employeeContactNumber": "8712345678",
                        "emergencyContactPerson": "Moll Mathew",
                        "emergencyContactAddress": "KOOODC",
                        "travelMealPreference": "vegetarian"
                    }
                },
                "otherDetails": {
                    "smsNotification": true,
                    "forexAmount": "0",
                    "forexRequiredDate": "20141002",
                    "employeeContactNumber": "00123456",
                    "billable": "true"
                },
                "emergencyContactDetails": {
                    "emergencyContacCity": "KOOODC",
                    "emergencyContactNumber": "9412345678",
                    "emergencyContactPerson": "Moll Mathew",
                    "emergencyContactAddress": "KOOODC"
                }
            },
            "billSubmissionMode": "manual",
            "travelClass": "Economy",
            "access_token": "",
            "travelEndDate": "25-01-2016",
            "timeStamp": "2015-12-11 16:00:47.395",
            "travelType": "DTR",
            "travelID": "3000553702",
            "travelStartDate": "20-01-2016",
            "approvalGIMS": "approvalGIMS",
            "expenseCodes": {
                "ExpenseTypeCollection": [{
                    "travelType": "DTR",
                    "client": "200",
                    "expenseDescription": "LODGING",
                    "glAccount": "0000834110",
                    "lastChangedBy": "",
                    "expenseCode": "DCN",
                    "changedOn": "0000-00-00",
                    "expenseStatus": "ACTIVE"
                }, {
                    "travelType": "DTR",
                    "client": "200",
                    "expenseDescription": "BUSINESS",
                    "glAccount": "0000839301",
                    "lastChangedBy": "",
                    "expenseCode": "DMT",
                    "changedOn": "0000-00-00",
                    "expenseStatus": "ACTIVE"
                }],
                "ErrorCodeCollection": [{
                    "ErrorText": "S",
                    "ErrorType": "S"
                }]
            },
            "empEmailID": "jaiseephen@gmail.com",
            "entry_type": "new_entry",
            "approvalBFM": "approverBFM",
            "status": "Pending for Expense"
        }],
        "location_contextCollection": [{
            "Status": "success"
        }],
        "user_context": {
            "timeStamp": "2015-12-11 16:00:47.754",
            "access_token": "",
            "empID": "00123456",
            "buDetailsCollection": [{
                "buHeadADID": "",
                "buHeadName": "",
                "buHeadEmail": ""
            }],
            "empTechManager": {
                "techMgrEmpID": "",
                "techMgrADID": "",
                "techMgrName": "",
                "techMgrEmail": ""
            },
            "empPassportDetails": {
                "endDate": "",
                "dateOfBirthAsOfPassport": "0000-00-00",
            },
            "empDetails": {
                "secondSupervisorEmpNumber": "00000000",
                "empDOB": "15.05.1999",
            },
            "empEmailID": "jaiseephen@gmail.com",
            "supDetailsCollection": [{
                "ADID": "FAMM",
                "supADID": "FAMM",
                "supEmail": "fazee_ammed@gmail.com",
                "lastName": "Faz Mammed",
                "supCostCenter": "",
                "Email": "fazee_ammed@gmail.com",
                "CostCenter": "",
                "empNumber": "00678444",
                "supEmpID": "00678444",
                "supName": "Faz Mammed",
                "Name": "Faz Mammed"
            }],
            "altSupDetailsCollection": [{
                "supADID": "FAMM",
                "supEmail": "fazee_ammed@gmail.com",
                "supEmpID": "00678444",
                "supName": "Faz Mammed"
            }]
        }
    }
}

我相信最简单的解决方案是parse JSON.parsetext。然后,您可以在主干模型中使用该对象,如下所示:

var obj = JSON.parse(income);
obj.EmployeeContext.travellContextCollection[0]

对于查找目标值,您还可以创建搜索目标节点的功能。

嗨,Alexander,非常感谢您的快速回复。我使用的方法与您与我分享的方法相同。我将此更新为问题本身的一部分。我使用车把从中获取数据,如下所示。{{travellContextCollection}{@index}{{this.empID}{/travellContextCollection}我用它来显示所有travellContext的empID,并在下拉列表中显示相同的empID。现在假设我在每个travellContext中有3个字段,在一个travellContextCollection中有两个这样的travellContext,如果我想显示TravelContext的details3字段,其中empID=myEmployeeID是从已经填充的下拉列表中选择的,我将如何实现?如果我将TravelContextCollection作为主干中的一个集合,并且如果我可以循环使用它并根据模型获取每个TravelContext,那就可以了,对吗?有没有这样的解决办法//下面是使用CodeTravelContextCollection:[{empID:00123456,empName:name1,empAddress:name1Address},{empID:002222,empName:name2,empAddress:name2Address}]的解释,所以下拉列表将包含以下数据001234560222myEmployeeId,如果我选择002222,我应该能够编辑{empID:0022222,empName:name2,empdress:name2Address}如果我理解你的意思是正确的,我会在一个视图中使用事件/方法,或者在嵌套视图中分离一个逻辑。你确切地知道你想要什么。你尝试了什么,以及你在尝试中面临的问题是什么。?你共享了一些代码,它属于哪个对象。?你希望实例是什么?ajaxResponse是什么?你如何能够如果可能的话,用更少的数据创建一个更简单的演示