knockout/Local TemporaryValue

knockout/Local TemporaryValue

by MKGaru

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-debug.js"></script>
<script src="https://mbest.github.io/knockout.punches/knockout.punches.js"></script>
<script src="https://rawgit.com/SteveSanderson/knockout-es5/master/dist/knockout-es5.js"></script>
<div data-bind="foreach:list">
  {{#with:$context}}
    {{ $parent.data[1] | as: 'item' }}
    <span>{{item.value}}</span>
  {{/with}}
  <span>{{typeof item == 'object' ?  item.value : 'unknown'}}</span>
</div>
<span>{{typeof item == 'object' ?  item.value : 'unknown'}}</span>

JavaScript

ko.filters.as = function as(value, name) {
  var $context = as.caller.caller.arguments[4];
  Object.defineProperty($context,name,{
    value: value,
    configurable:true
  });
  return null;
};

function VM(){
  this.data = [
    {id:1,value:'A'},
    {id:3,value:'B'},
    {id:5,value:'C'}
  ];
  this.list = [
    'I','II','III','IV','V'
  ];
}

var vm = new VM();

ko.punches.enableAll();
ko.applyBindings(vm);