javascript - Syncfusion 无法从数据源呈现 Grid 行模板表达式值
问题描述
嗨,我正在使用 Syncfusion Essential JS2 for JavaScript(ES5),并尝试使用 Grid 组件来呈现来自该 testdata 数组的数据:
var testdata = [{firstName: 'Tony', lastName: 'Stark'}, {//some other objects}];
我像这样创建了网格对象:
var grid = new ej.grids.Grid({
dataSource: testdata,
rowTemplate: '#row-template',
columns: [
{field: 'firstName', headerText: 'First Name'},
{field: 'lastName', headerText: 'Last Name'}
],
});
grid.appendTo('#grid');
我的jsp中的实际模板脚本如下所示:
<script id="row-template" type="text/x-template">
<tr>
<td>${firstName}</td> <!-- should render 'Tony' -->
<td>${lastName}</td> <!-- should render 'Stark' -->
</tr>
</script>
当我运行它时,td 标签是空白的。看起来 '${}' 语法不起作用,然后我尝试将硬编码值放入 td 标签中,
<td>Test First Name</td>
<td>Test Last Name</td>
果然,硬编码值被成功渲染。但我需要从'testdata'数组中获取值..
我希望这里有人以前使用过网格组件。请帮我。以下是我使用的技术:
Syncfusion Essential JS(ES5)、JSP、Spring、
谢谢你。
解决方案
我终于解决了这个问题。问题在于 Syncfusion 的模板引擎和 JSTL (JSP) 模板引擎具有相同的语法:
${expression}
因此,这个脚本:
<script id="row-template" type="text/x-template">
<tr>
<td>${firstName}</td> <!-- should render 'Tony' -->
<td>${lastName}</td> <!-- should render 'Stark' -->
</tr>
因为它是写在 jsp 文件中的,所以 ${firstName} 和 ${lastName} 被呈现为好像它是一个 JSTL 表达式。这就是为什么 td 标签是空白的。
为了解决这个问题,我只是将模板代码从 jsp 移到了我的 js 文件中。
var grid = new ej.grids.Grid({
dataSource: testdata,
rowTemplate: '<tr><td>Write template code here</td></tr>',
columns: [
{field: 'firstName', headerText: 'First Name'},
{field: 'lastName', headerText: 'Last Name'}
],
});
grid.appendTo("#Grid");
推荐阅读
- python - 使用 TensorFlow 进行内存高效的滑动窗口序列学习
- python - 通过电报机器人设置聊天权限
- node.js - 将值传递给节点/电子应用程序通知中操作按钮的回调函数?超时后回调函数也不起作用
- python - 尽管 SECRET_KEY 错误,但部署在 Heroku 上的 Django 应用程序仍然有效
- javascript - 如何在数组 js 中从 px 到 vh
- amazon-web-services - 使用 for 改造模板文件并转义最后一个逗号
- python - 计算图像python中的角度
- json - 在颤振中使用列表视图搜索数据时出错
- google-cloud-platform - Google 工作区中没有 Gmail 应用程序选项
- typescript - 如果最里面的函数是泛型的,你能写一个正确推断类型的`Compose`方法吗