http://stackoverflow.com/questions/42513280/knockout-observable-array-index-in-outside-function

by jlspake

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.1/knockout-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.4.1/knockout.mapping.min.js"></script>
<script type="text/javascript">
</script>

<div>
  <select data-bind="options: choices, value: selectedChoice">
  </select>
</div>
<br />
<br />
<input id="testButton" type="button" value="Test myValue from outside" />

JavaScript

var myMonth; //global variable myMonth
  
//oberservable array       
function viewModel() {
  this.choices = ko.observableArray([
    "January","February","March","April","May","June",
    "July","August","September","October","November","December"]);

  this.selectedChoice = ko.observable();

  this.selectedChoice.subscribe(function(newValue) {
    myMonth = this.choices.indexOf(this.selectedChoice());
    //myLayerGroup.clearLayers();
    //myLayerGroup.addLayer(myLayers[myMonth]);
    console.log(myMonth); //works!
    //return myMonth; // no effect?!
  },this);
};
ko.applyBindings(new viewModel());

// popUp window content
function onEachFeature() {
  alert(myMonth);
};

$("#testButton").on("click", onEachFeature);