这些console.log的输出是重新提交的结算数据= [object Object]当数据被字符串化时,我们得到=“[对象 对象]“重新提交的结算数据是= [对象对象]当数据 是字符串化我们得到= {“记录”:“[对象]]} 但是我们需要来自settFight内部的数据(settFight的完整数据):
JSON is like this:
"Data": [
{
"Key": "HELLOWORLD1234",
"settleFight": {
"ATransfers": [
{
"From": "Delhi",
"To": "Mumbai",
"ID": "ACK1994",
"Qty": "900",
}
],
"LastUpdatedTimestamp": "2018-05-01 10:30:06.91983248 +0000 UTC",
"ObjectType": "SETTLEMENT",
"Reason": "FIGHT",
"SettlementStatus": "FAILED",
"SettlementType": "FORCED",
"Version": 1
}
}
]
<script>
window.reSettle = function (SettlData){
console.log(" Settlement data for resubmit is = " + SettlData);
console.log("When data is stringifyed the we get = " + JSON.stringify(SettlData));
var valueS= {}; valueS = {"Record": SettlData};
console.log(" Settlement data for resubmit is = " + valueS);
console.log("When data is stringifyed the we get = " +
JSON.stringify(valueS));
console.log("When data is PARSed the we get
= " + JSON.parse(valueS));
</script>
<body>
<div style="cursor:pointer; color:blue; text-decoration:underline;"
onclick="reSettle('{{settleFight}}');">Resettle</div>
</body>
答案 0 :(得分:1)
您好,您可以在下方找到一个代码片段,其中包含您可能会觉得有用的两个示例。
您必须使用{{#each}}来迭代您的数组数据。每个循环中的上下文是传递给每个循环的数据,因此如果您传递ATransfers,请使用{{ID}}。在不对数组进行迭代的情况下执行此操作的另一种方法是使用直接符号{{Data.0.settleFight.ATransfers.0.ID}},其中0是数组中出现的。我个人不建议使用这种表示法,因为如果数组没有元素就会失败而你不明白为什么。
另一个评论:在您的示例中,您不使用数组,因为您只有一个元素。如果它们不是强制性的,您可以使用以下方法简化数据:
var context = { "Data": [
{
"Key": "HELLOWORLD1234",
"settleFight": {
"ATransfers": {
"From": "Delhi",
"To": "Mumbai",
"ID": "ACK1994",
"Qty": "900",
},
"LastUpdatedTimestamp": "2018-05-01 10:30:06.91983248 +0000 UTC",
"ObjectType": "SETTLEMENT",
"Reason": "FIGHT",
"SettlementStatus": "FAILED",
"SettlementType": "FORCED",
"Version": 1
}
}
}
如果您这样做,则不需要{{#each}},您可以使用{{Data.settleFight.ATransfers.ID}}
var obj = { "Data": [
{
"Key": "HELLOWORLD1234",
"settleFight": {
"ATransfers": [
{
"From": "Delhi",
"To": "Mumbai",
"ID": "ACK1994",
"Qty": "900",
}
],
"LastUpdatedTimestamp": "2018-05-01 10:30:06.91983248 +0000 UTC",
"ObjectType": "SETTLEMENT",
"Reason": "FIGHT",
"SettlementStatus": "FAILED",
"SettlementType": "FORCED",
"Version": 1
}
}
] };
var source = document.getElementById("template").innerHTML;
var template = Handlebars.compile(source);
document.getElementById("output").innerHTML = template(obj);
function deleteBill(bill) {
console.log(bill);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.11/handlebars.js"></script>
<script id="template" type="text/x-handlebars-template">
First example (only direct access)
<div style="cursor:pointer; color:blue; text-decoration:underline;"
onclick="reSettle('{{Data.0.settleFight.ATransfers.0.ID}}');">Resettle {{Data.0.settleFight.ATransfers.0.ID}}</div>
Second example (mix with each and direct access)
{{#each Data}}
<div style="cursor:pointer; color:blue; text-decoration:underline;"
onclick="reSettle('{{settleFight.ATransfers.0.ID}}');">Resettle {{settleFight.ATransfers.0.ID}}</div>
{{/each}}
Second example (only each loops):
{{#each Data}}
{{#each settleFight.ATransfers}}
<div style="cursor:pointer; color:blue; text-decoration:underline;"
onclick="reSettle('{{ID}}');">Resettle {{ID}}</div>
{{/each}}
{{/each}}
</script>
<div id="output"></div>