I have this template:
<script type="text/template" id="menu-template">
<a ><li data-menuGroup="<%= menuGroup %>" class="<%=liClass%>" id="<%= liId%>"><%=name%></li></a>
</script>
this JSON:
{"id":5,"menuId":2,"name":"Home","liId":"reports_home_sub_menu","liClass":"tab","targetDiv":"reportHome","contentName":"qado_reports_home","url":"","callback":"","orderBy":1,"privilage":"","menuGroup":"reportsTab"}
and this Marionette Javascript:
View = Backbone.Marionette.ItemView.extend({
template: "#menu-template"
});
var model = new Backbone.Model(json);
var view = new View(model);
view.render();
$("#menuContainer").append(view.el);
but when I run this, I get a " ReferenceError: menuGroup is not defined" error in the console. I am very new to Marionette so it's probably something stupid. But the JSON clearly has an item "menuGroup" in it, so what am I missing?
You are close. First, make sure your JSON-string is parsed into a JavaScript object. Secondly, the View
constructor function does not take a model as a
parameter, but an options
object, which has a model
-field.
var modelData = JSON.parse(json);
var model = new Backbone.Model(modelData);
var view = new View({model: model});