The Angular interpreter is very useful, but I'm having a difficult time
using values from it inside custom JavaScript.

Thus far, the only means I can find of accessing variables is something
like:
%angular
<div id="dummy" vars="data1,data1Schema,data2,data2Schema"></div>
<script type="text/javascript">
  var div = $('#dummy');
  //Given an element in the note & list of values to fetch from Spark
  //window.angularVars.myVal will be current value of backend Spark val of
same name
  function hoist(element, varNames){
    window.angularVars = {};
    var scope =
angular.element(element.parent('.ng-scope')).scope().compiledScope;
    $.each(varNames, function(i, v){
      window[v+'-watcher'] = scope.$watch(v, function(newVal, oldVal){
        console.log('Setting ' + v + ' to:\n');
        console.log(newVal);
        window.angularVars[v] = newVal;
      });
    });
  }
  hoist(div, div.attr('vars').split(','));
</script>

Then in later paragraphs, I can access window.angularVars['data1'], etc.

It feels quite hacky. Is there a better way to enable use of angular bound
variables inside custom JS?

Reply via email to