1
ノックアウトデータバインディングステージでEnumerableを使用することはできますか?私は最初のToArrayをすれば は、私が唯一あなたがEnumerablesで動作するようにあなた自身のforeachバリアントを書くことができ列挙Linqjsとノックアウトによるレイジーローディング
ノックアウトデータバインディングステージでEnumerableを使用することはできますか?私は最初のToArrayをすれば は、私が唯一あなたがEnumerablesで動作するようにあなた自身のforeachバリアントを書くことができ列挙Linqjsとノックアウトによるレイジーローディング
を消費している、それが動作するようになってきました。
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/
この情報がお役に立てば幸いです。
Enumerableを消費するToArrrayをまだやっているので、実際にはLazyではありません。Enumerable 2N回以上繰り返します。本当に怠けているとN回 – Anders