我正在努力让我的模板正确显示我的视图/模型中的数据。我可以整体获取对象但我无法访问对象中包含的任何数据。我得到一个回复说这个对象是未定义的。
$(document).ready(function() {
var Doctor = Doctor || {};
var startup = function() {
Doctor.groupProfile = new Group();
Doctor.groupProfile.fetch().done(
$.when().then(initializeUI)
);
};
var initializeUI = function() {
Doctor.groupView = new GroupsView({
group: Doctor.groupProfile,
el: '#template'
});
Doctor.groupView.render();
};
startup();
});
var Group = Backbone.Model.extend({
url: getMeetupData('groups'),
parse: function(resp) {
this.name = resp.results[0].name;
this.link = resp.results[0].link;
this.organizer = resp.results[0].organizer;
this.description = resp.results[0].description;
this.photo = resp.results[0].group_photo;
this.city = resp.results[0].city;
this.topics = new TopicCollection(resp.results[0].topics);
return resp;
}
});
var GroupsView = Backbone.View.extend({
el: $('template'),
initialize: function(options) {
this.group = options.group;
},
// Use an external template
template: _.template($('#groupsTemplate').html()),
render: function() {
// Fill the html with the template and the collection
//$(this.el).html(this.template({ tweets: this.collection.toJSON() }));
$(this.el).html(this.template({ group: this.group}));
return this;
}
});
extends ./layout/layout
block content
section(class="row"): div(class="column"): div(class="row")
div(class="large-12 columns")
h1 Mile Hi Who
section(class="row space"): div(class="column")
nav(class="backboneNav"): ul
li(class="large-3 columns about"): a(href="#about") About the Group
li(class="large-3 columns events"): a(href='#events') Upcoming Events
li(class="large-3 pull-3 columns"): a(href='#') Members
section(id="template")
script(type="text/template", id="groupsTemplate")
section(id="swiping", class="row"): div(class="column"): div(class="row")
div(class="large-3 large-centered columns")
|<img id="groupPhoto" src='<%= this.group.get('groupPhoto') %>' />
<% console.log(group); %>
.large-12.columns.main-content.group
h3 <%= group.name %>
p.text <%= group.description %>
section(class="row ajaxSpacing"): div(class="column"): div(class="row")
div(class="large-12 columns main-content", id="templateEvent")
script(type="text/template", id="eventsTemplate")
<% _.each(events, function(event){ %>
| <div class="events">
| <h3><%= event.name %></h3><p>
| <%= new Date(event.time).toDateString() %>
| <%= new Date(event.time).toLocaleTimeString() %>
| <%= event.venue.name %></p>
| <button data-event-id='<%= event.id %>'>See More</button>
| <span><p><%= event.description %></p></span>
| </div>
<% }); %>
我得到整体对象,但我无法获得任何其他数据。 有什么想法吗?
答案 0 :(得分:0)
我在休息一下并享用早餐(第二次早餐)之后自己想出来了。
发生的事情是我在Doctor.groupProfile.fetch函数上发生了我的链接错误。在上面的例子中,它是在事件结束之前调用并实例化UI,所以当我看到控制台数据时,模型当时没有所有数据,因此未定义。
它应该是:
Doctor.groupProfile.fetch().done(function() {
$.when().then(initializeUI);
});
这样,在Model有数据之后,视图将被实例化。
谢谢!