使用 Linqjs 和 Knockout 延迟加载
Lazy loading with Linqjs and Knockout
是否可以在挖空数据绑定阶段使用枚举?只有当我首先执行 ToArray 时,我才能让它工作,这将消耗 Enumerable
http://jsfiddle.net/xZmWx/
您可以编写自己的 foreach 变体来处理枚举。
ko.bindingHandlers['foreach2'] = {
makeTemplateValueAccessor: function(valueAccessor) {
return function() {
var bindingValue = ko.utils.unwrapObservable(valueAccessor());
if (bindingValue instanceof Enumerable) {
bindingValue = bindingValue.ToArray();
}
// If bindingValue is the array, just pass it on its own
if ((!bindingValue) || typeof bindingValue.length == "number")
return { 'foreach': bindingValue, 'templateEngine': ko.nativeTemplateEngine.instance };
// If bindingValue.data is the array, preserve all relevant options
return {
'foreach': bindingValue['data'],
'includeDestroyed': bindingValue['includeDestroyed'],
'afterAdd': bindingValue['afterAdd'],
'beforeRemove': bindingValue['beforeRemove'],
'afterRender': bindingValue['afterRender'],
'templateEngine': ko.nativeTemplateEngine.instance
};
};
},
'init': function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
return ko.bindingHandlers['template']['init'](element, ko.bindingHandlers['foreach2'].makeTemplateValueAccessor(valueAccessor));
},
'update': function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
return ko.bindingHandlers['template']['update'](element, ko.bindingHandlers['foreach2'].makeTemplateValueAccessor(valueAccessor), allBindingsAccessor, viewModel, bindingContext);
}
};
http://jsfiddle.net/madcapnmckay/QeEQg/
希望这有帮助。
相关文章:
- 延迟加载jquery后替换$(document).ready(function)
- 在运行时加载knockout.jslib
- 延迟加载背景图像时防止双重请求
- 延迟加载 脚本加载和/或执行
- 使jquery延迟加载插件在视口内工作
- 如何在水平滚动 Jquery 上实现延迟加载
- 如何使用angularjs延迟加载谷歌jsapi图表
- 使用requirejs对延迟加载成员模块进行Typescript
- 淘汰具有延迟加载的多选下拉列表
- Kendo UI树视图中的延迟加载(带缓存)
- 使用Twitter引导程序's Scrollspy到延迟加载(滚动加载)异步JavaScript
- Javascript客户端从ASP.NET MVC后端延迟加载模型
- 在featherlight.js中延迟加载iFrame
- 如何包含多个JS文件-延迟加载javascript
- 使用筛选延迟加载项目
- AngularJS正在等待CSS延迟加载
- 卸载/销毁角延迟加载组件
- 使用Socket IO进行Jstree延迟加载
- 如何在文本上实现延迟加载
- 使用 Linqjs 和 Knockout 延迟加载