Skip to content

Instantly share code, notes, and snippets.

@mauron85
Last active December 18, 2015 08:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mauron85/5756077 to your computer and use it in GitHub Desktop.
Save mauron85/5756077 to your computer and use it in GitHub Desktop.
<html>
<head>
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<script src="http://underscorejs.org/underscore.js"></script>
<script src="http://backbonejs.org/backbone.js"></script>
<script>
var Friend = Backbone.Model.extend({
move: function(pos) {
this.set('pos', pos);
return this;
}
});
var Friends = Backbone.Collection.extend({
model: Friend
});
var Meeting = Backbone.Model.extend({
initialize: function () {
this.set('friends', new Friends());
}
});
var Meetings = Backbone.Collection.extend({
model: Meeting
});
var CreateMeetingView = Backbone.View.extend({
setMeetings: function(meetings) {
this.meetings = meetings;
},
createNewMeeting: function () {
var friend = new Friend({name: 'Marian'});
var meeting = new Meeting();
meeting.get('friends').add(friend);
this.meetings.add(meeting);
}
});
var MapView = Backbone.View.extend({
initialize: function () {
var self = this,
meetings = this.meetings = this.options.meetings;
meetings.each(function (meeting) {
var friends = meeting.get('friends');
friends.each(function (friend) {
friend.on('change', self.friendMoved);
});
});
},
friendMoved: function (friend) {
testFriendMoved(friend)
}
});
var meetings = new Meetings();
var createMeeting = new CreateMeetingView();
createMeeting.setMeetings(meetings);
createMeeting.createNewMeeting();
var map = new MapView({meetings: meetings});
var pos = {lat:2};
var friend = meetings.at(0).get('friends').at(0).move(pos);
function testFriendMoved(friend) {
if (friend.get('pos') !== pos) {
throw 'Test failed';
}
}
</script>
</head>
<body>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment