我不了解Kendo模板的基本知识,所以也许有人可以向我解释一下.网格中单元格的模板示例来自Telerik示例代码.
template:"
最终,这会生成一个输入标记,如果IsAdmin的值为true,则包含"checked ='checked'"
我不明白评估的背景
#= IsAdmin ? checked = 'checked' : '' #
文档说"#="表示"渲染为文字"(无论这意味着什么),我理解"IsAdmin"是评估/执行模板时提供的值.
#=后面的内容看起来像Javascript,但如果只是那样,它只会将名为"checked"的变量的值设置为"checked"或空字符串.
是个 ?这里的运算符真的是javascript,还是剑道模板语言?我没有看到过与运营商特定的Kendo特定语言.但如果这真的是一个Javascript?运算符,它是如何工作的,我们得到一个文字"checked ='checked',而不是设置一个名为"checked"的var,值为'checked'.
叫我困惑.
这是JavaScript.使用此模板字符串:
"<input type='checkbox' #= isAdmin ? checked='checked' : '' # />"
Template.compile将生成如下函数:
function anonymous(data) { var o, e = kendo.htmlEncode; with(data) { o = '<input type=\'checkbox\' ' + (isAdmin ? checked = 'checked' : '') + ' />'; } return o; }
如您所见,您的模板部分无需更改即可使用.渲染单元格时,将执行此函数(传入您的数据项,例如网格的行模型),并将结果字符串用作单元格的内容.
从呈现的HTML的角度来看,这里:
"<input type='checkbox' #= isAdmin ? checked='checked' : '' # />"
相当于:
"<input type='checkbox' #= isAdmin ? 'checked' : '' # />"
因为checked='checked'
只会评估为'已检查'.但是,使用第一个变体还将设置checked
传递给模板函数的数据的属性(请参阅演示以进行说明).