Commit 82029c2d by Clinton Blackburn

Passing JS Data via JS

Passing the JSON as an element attribute poses problems for escaping quotes. The initial data is now being passed as an actual JavaScript object, removing the need to parse the JSON.
parent 22cbd617
...@@ -6,14 +6,14 @@ ...@@ -6,14 +6,14 @@
define(['jquery', 'models/course-model', 'models/tracking-model', 'models/user-model'], define(['jquery', 'models/course-model', 'models/tracking-model', 'models/user-model'],
function ($, CourseModel, TrackingModel, UserModel) { function ($, CourseModel, TrackingModel, UserModel) {
'use strict'; 'use strict';
var jsonData = JSON.parse($('#content').attr('data-analytics-init')), var courseModel = new CourseModel(),
courseModel = new CourseModel(),
trackingModel = new TrackingModel(), trackingModel = new TrackingModel(),
userModel = new UserModel(); userModel = new UserModel();
courseModel.set(jsonData.course); // initModelData is set by the Django template at render time.
trackingModel.set(jsonData.tracking); courseModel.set(initModelData.course);
userModel.set(jsonData.user); trackingModel.set(initModelData.tracking);
userModel.set(initModelData.user);
return { return {
courseModel: courseModel, courseModel: courseModel,
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
{% block content-outer %} {% block content-outer %}
<main class="col-xs-12 main" id="content" data-analytics-init='{{ page_data | safe }}'> <main class="col-xs-12 main" id="content">
<div class="view-head"> <div class="view-head">
{% block header-text %}<h1>{{ page_title }}</h1>{% endblock %} {% block header-text %}<h1>{{ page_title }}</h1>{% endblock %}
</div> </div>
...@@ -77,6 +77,11 @@ ...@@ -77,6 +77,11 @@
{# Translation support for JavaScript strings. #} {# Translation support for JavaScript strings. #}
<script type="text/javascript" src="{% url 'django.views.i18n.javascript_catalog' %}"></script> <script type="text/javascript" src="{% url 'django.views.i18n.javascript_catalog' %}"></script>
{# Initial page data passed from view to JS initializer #}
<script type="text/javascript">
var initModelData = {{ page_data|safe }};
</script>
{% compress js %} {% compress js %}
<script src="{% static 'js/common.js' %}"></script> <script src="{% static 'js/common.js' %}"></script>
<script data-main="{% static 'js/application-main.js' %}" src="{% static 'vendor/require.js' %}"></script> <script data-main="{% static 'js/application-main.js' %}" src="{% static 'vendor/require.js' %}"></script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment