对于所有具有“Template”配置属性来定义项目的“items”控件(例如:combobox, dropdownlist),文档告诉我模板属性可以是字符串或函数。如果使用了一个函数,这个函数应该返回你想要呈现的Html的字符串表示形式。我想有这个模板功能增强,所以函数也可以返回一个HtmlElement或HtmlFragment而不是一个字符串。因此,模板函数完全负责构造将插入到dom中的Html。你的模板处理只需要检查函数的返回类型是否为HtmlElement或HtmlFragment的实例,并接受函数的结果。不需要进一步处理。这个特性请求背后的原因是:在我的开发中,我试图尽可能地摆脱基于字符串的Html定义。因为这种基于字符串的Html和Htmltemplates定义是现代SPA架构的薄弱部分。不可能在设计时用绑定表达式检查这些Html的内容。因此,我开发了一个组件,以强类型的方式定义我的HtmlElements或HtmlFragments。 This component has full support for designtime checking of properties and binding expressions. The result from my component however is an HtmlElement not a “String”. Now i have to work around this by serializing the HtmlEment to a string. This not only is a waste of performance but also makes it impossible to attach event handler to the hmlElement or it children.
在Grid组件中,可以在脚本标记中创建ClientDetailTemplate,并将其标记为text/kendo-tmpl,然后通过ClientDetailTemplateId("…")选项进行引用。如果能够对ClientRowTemplate做同样的事情,也可以节省使用kendo.template(…).html()在javascript中手动生成它的时间,那就太好了。
创建一个新的配置选项,这样当字段的值为“null”时就不会显示任何内容。举个例子;移动列表视图有一个新属性“shownullvalues”,当设置为false时,当实际字段值不存在(或为null)时,它将不显示任何文本。
如果一个Kendo-Grid被设置为。scrollable (true),那么网格的高度样式为“height:200px;”。这似乎是不可改变的,没有编辑剑道源代码。但在我看来,这在某种程度上是必要的。当然,它可以改变一些javascript代码,但为什么这么复杂?这将是更有效的“改变”css我想在飞行。例如:scrollablestyle (new {@class = "max-height:300px;"})
模板对文档数据库(如MongoDB)不太友好。MongoDB中的数据是模式自由的,这意味着一些数据字段可能会丢失。在呈现模板时可能会导致错误。jQuery的API可以有一个可选的参数来提供默认值,但我不知道如何在剑道中做到这一点。
如果在网格中编辑一条记录,它会根据schema.Model中定义的验证规则自动进行验证。但是,如果使用自定义编辑器模板,则必须手动向每个输入字段添加html属性,例如required。如果能够使用模式中定义的相同验证规则就太好了。自定义编辑器模板的模型。谢谢你,丹
SVG路径不是用与MVVM视图模型绑定的剑道模板呈现的。参考:http://jsfiddle.net/qqzmZ/9/。已知问题:在firefox中,当我们检查svg元素并编辑svg标签元素(右键单击并选择“edit svg”)时,svg正在渲染。但是在IE 10和Safari中,svg标签中没有路径标签。除了Chrome,其他浏览器都要求使用正确的命名空间创建元素。由于模板输出是字符串,这通常涉及DOMParser。代码是这样的:var parser = new DOMParser();Var doc =解析器。parseFromString (svgString“text / xml”);var node = document.adoptNode(doc.documentElement); // node can now be appended to the current document Can this code be supported with kendo templates to render SVG tags.
如果剑道模板包含任何字符,则会被破坏,因为“#”是剑道模板的表达式分隔符,因此会被编码为“{”。文档建议用'\\#'转义'#',但这使得非常基本的语法(使用ASP的示例)。. NET MVC)看起来很荒谬:而不是写@ localiz.get ("aaa")我需要使用@Html.Raw(Html.Kendo(). templateencode (Html.Encode(localiz.get ("aaa")))))我在剑道模板中的每个本地化字符串(因为任何字符串可能包含某些语言的unicode字符)。如果您使用'##'或'$'作为表达式分隔符,那么简单的@Localization.Get("aaa")将在99.9%的情况下工作。我建议你:1)修复当前模板语法解析器不处理html编码的符号作为模板分隔符。2)为了更可靠,创建第二个模板类型'text/x-kendo-template2',分隔符为'##','$'或经过适当分析后发现冲突最小的任何内容。将其作为将来的推荐,并使“text/x-kendo-template”过时。3)添加TemplateEncode()方法到Kendo MVC扩展。
嗨,我们正在构建一个使用jQuery模板的大型JS应用程序。当模板的数量超出控制时,我将其移动到另一个HTML页面,并执行$.get("template . HTML ")并将其附加到DOM。我们逐个加载每个模板。我们想用类似head.js的东西来做并行加载也许你们能想出一个更简洁的方法。比如这样:kendo.template .remote = ['templates1.html', 'templates2.html'];Kendo.ready (function(){//踢屁股!});
这将是很好的能够设置全局'useWithBlock'设置为false,这样我就不需要包括设置所有的时间与模板工作时。我意识到小部件使用这一点,并且有一种未被记录的方式来做到这一点-所以,如果有一种官方的方式来设置它是安全的,那就太好了。
当一个网格有很多列时,列菜单变得难以使用。这是因为两件事:列总是按照它们在网格中出现的顺序排列,并且不支持模板/列分组。结果是一个长而无序的列表,用户很难快速浏览。建议改进:1)在列菜单中增加按字母顺序排序列的选项。2)根据数据类型或用户定义的组添加分组列选项。
关于跨站脚本(XSS),从客户端的角度来看,来自任何服务器的数据都不可信,即使它是您自己的服务器之一(可能已被黑客攻击)。虽然您确实需要在服务器上提供XSS保护,但在客户端提供额外的保护当然不是一件奢侈的事情。例如,kendo.template()函数可以扩展为过滤掉任何不需要的