2012-05-08 6 views

答えて

0

を消費している、それが動作するようになってきました。

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/

この情報がお役に立てば幸いです。

+0

Enumerableを消費するToArrrayをまだやっているので、実際にはLazyではありません。Enumerable 2N回以上繰り返します。本当に怠けているとN回 – Anders

関連する問題