-1

我有这个带有内联模板的道场

  var actionName = 'read';
    $("#grid").kendoGrid({
      columns: [
        { field: "name" },
        { field: "age" }
      ],
      dataSource: [
        { name: "Jane Doe", age: 30, read: true, actionName: actionName }
      ],
      detailTemplate: "<div> #:" + actionName  +"# </div>"
    });

这个道场及其外部模板:

<script id="detailTemplate" type="text/x-kendo-template">
        #: actionName #
</script> 


var actionName = 'read';
$("#grid").kendoGrid({
  columns: [
    { field: "name" },
    { field: "age" }
  ],
  dataSource: [
{ name: "Jane Doe", age: 30, read: true, actionName: actionName }
  ],
  detailTemplate: function(dataItem){ 
    return kendo.template($("#detailTemplate").html())(dataItem);
  }
});

在第一个detailTemplate: "<div> #:" + actionName +"# </div>"中我可以渲染值:true但是在第二个中#: actionName #我可以渲染read

所以我的问题是如何呈现价值true

4

1 回答 1

1

参数(您命名的)dataItem接管当前行中的数据。然后,您需要编写要渲染的属性。dataItem对整个模板有效。

<script id="detailTemplate" type="text/x-kendo-template">
    #: read #
</script>

detailTemplate: function(dataItem){ 
    return kendo.template($("#detailTemplate").html())(dataItem);
}

应该足够了。

道场示例

detailTemplate 中的函数参数将包含行中对象的所有属性(甚至不显示为列)。因此,如果您要进行一些特殊的计算或某些事情,您可以在详细模板函数中执行它并创建新属性,该属性将在模板中通过名称访问。

道场示例 2

编辑:如果你想运行(比如说)一些命令,它是字符串,你必须使用eval函数。此函数将执行文本。这意味着如果您将使用某个函数名称作为 eval 参数,则将执行该函数。

道场示例 3

然而,我敢于从这个网站引用一个重要的段落:eval - mozila developer

不要不必要地使用 eval !

eval() 是一个危险的函数,它以调用者的权限执行它传递的代码。如果您使用可能受到恶意方影响的字符串运行 eval(),您最终可能会在具有您网页/扩展程序权限的用户计算机上运行恶意代码。更重要的是,第三方代码可以看到调用 eval() 的范围,这可能导致类似 Function 不易受到的攻击。

eval() 通常也比替代方法慢,因为它必须调用 JS 解释器,而许多其他构造已被现代 JS 引擎优化。

对于常见的用例,eval() 有更安全(更快!)的替代方案。

于 2015-12-20T19:27:41.180 回答