我有一个包含100多个项目列表的表格,每个项目有3个下拉列表,其中包含100多个项目的列表。
当用户点击从MVC应用程序获取json数据的搜索按钮时,我正在使用以下方法动态激活绑定。
问题是IE8比Chrome渲染要多20倍。
我在我的代码中遵循了以下ko提示:
select
on
事件我必须以IE8为目标,因为它是一个内部应用程序,并继续使用KO为我的应用程序提出问题,因为IE8& KO PERFORMANCE。
cshtml
代码:
...在html表格中我有下面的td用于显示下拉列表。
<td>
<span data-bind="attr: { id: 'type-ddpl-holder-' + RowUniqueNo() }">
<select data-ddpl-loaded="false" class="type-ddpl">
<option data-bind="html: TypeName() ? TypeName() : '--Please select--''" selected></option>
</select>
</span>
</td>
...
我需要使用RowUniqueNo()
替换ko template
绑定的唯一dom
元素ID。
意图是不使用ko选项绑定,使用json中的项目加载下拉列表,即只下载一个项目。
以下ko代码位于ajax成功处理程序中,该处理程序呈现上述模板。
ko.applyBindingsToNode(document.getElementById('place-holder'),
{ template: { name: 'def-edit-tmpl', data: vm} });
onDdpl();
var element = document.getElementById('place-holder');
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
offDdpl();
});
on
事件,该事件将使用ko模板绑定替换初始绑定select
控件并使用options
绑定。< / LI>
on
事件。是on
事件
<script type="text/html" id="type-ddpl-tmpl">
<select class="fl tb120w" data-ddpl-loaded="true" data-bind="options: $parent.typeList, optionsText: 'Value', optionsValue:'Key', value:$data.TypeId">
</select>
对于使用此方法渲染100个项目,IE8需要10秒以上而Chrome需要不到一秒钟。在10多秒内,IE8没有响应。我们非常感谢任何提高性能的帮助/提示。