Javascript 如何在DOM中将json呈现为元素?
我有一个动态表,其中显示了一些数据,90%的数据只是文本,而10%是元素。正如您在下面看到的,有一个附加了一些json的表。例如,如果json显示Javascript 如何在DOM中将json呈现为元素?,javascript,angularjs,Javascript,Angularjs,我有一个动态表,其中显示了一些数据,90%的数据只是文本,而10%是元素。正如您在下面看到的,有一个附加了一些json的表。例如,如果json显示“element\u type”:[“WAGER\u ACTION\u BUTTON”]我需要显示一个按钮,而在另一种情况下,则显示…:“BASIC\u CHECKBOX”然后我需要显示一个复选框 因此,表格的标题是填充打开,这意味着我需要在那里显示一个按钮。请参见底部的json对象 这是桌子 <table> <
“element\u type”:[“WAGER\u ACTION\u BUTTON”]
我需要显示一个按钮,而在另一种情况下,则显示…:“BASIC\u CHECKBOX”
然后我需要显示一个复选框
因此,表格的标题是填充打开
,这意味着我需要在那里显示一个按钮。请参见底部的json对象
这是桌子
<table>
<thead>
<tr>
<th ng-repeat="column in cols"
ng-init="isXX = column.indexOf('XX') === 0">
<span ng-if="isXX">{{column.substring(3).replace('_', ' ')}}</span>
<span ng-if="!isXX">{{column}}</span>
</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="row in rows">
<td ng-repeat="column in cols">
<span>{{row[column]}}</span>
</td>
</tr>
</tbody>
</table>
下面是我从后端接收到的json对象
{
"BET": 57630343,
"CUSTOMER": 181645,
"SPORT": "MLB",
"XX_FILL OPEN": {
"element": {
"element_type": [
"WAGER_ACTION_BUTTON"
],
"element_call": [
"fillOpen(57630343)"
],
"element_content": [
""
]
}
},
"XX_VIEW": null,
"XX_CANCEL": {
"element": {
"element_type": [
"BASIC_CHECKBOX"
],
"element_call": [
""
],
"element_content": [
"0"
]
}
}
}
所以每次你看到一个以XX\ux
开头的道具,都意味着一个元素
在上面看到的这个json中,对象键:BET、CUSTOMER、SPORT、XX_FILL_OPEN、XX_VIEW和XX_CANCEL是表的标题,我在这里重复一下:每次一个道具在开始时带有XX_
,这应该是一个元素,但我需要弄清楚它是什么类型的元素,以便在DOM中显示它
//to switch on value
<div ng-repeat="(key, value) in bars">
<div ng-switch ="value">
<button ng-switch-when="foo" >foo Button</button>
<input ng-switch-when="bas" type="checkbox" />
</div>
</div>
//to switch on key
<div ng-repeat="(key, value) in bars">
<div ng-switch ="key">
<button ng-switch-when="foo" >foo Button</button>
<input ng-switch-when="bas" type="checkbox" />
</div>
</div>
//打开值
foo按钮
//打开钥匙
foo按钮
您可以检查“column”的值,并使用ng开关(如果列名都已知)或ng if。
如果我理解正确,以下是两种实现:
带ng开关:
<div ng-switch="column">
<button ng-switch-when="XX_FILL OPEN" >Test Button</button>
<input ng-switch-when="XX_CANCEL" type="checkbox" />
<span ng-switch-default>{{row[column]}}</span>
</div>
测试按钮
{{行[列]}}
如果:
<td ng-repeat="column in cols">
<span ng-if="column.indexOf('XX') < 0">{{row[column]}}</span>
<button ng-if="column.indexOf('FILL OPEN') >= 0" >Test Button</button>
<input ng-if="column.indexOf('CANCEL') >= 0" type="checkbox" />
</td>
{{行[列]}}
测试按钮
我更喜欢对form elementshow发出指令,我可以根据我在问题中发布的json使用这个ng开关吗?最多3或4个左右。
<td ng-repeat="column in cols">
<span ng-if="column.indexOf('XX') < 0">{{row[column]}}</span>
<button ng-if="column.indexOf('FILL OPEN') >= 0" >Test Button</button>
<input ng-if="column.indexOf('CANCEL') >= 0" type="checkbox" />
</td>