backbone.js - Backbone Underscore error on template render: Uncaught TypeError: Object #<Object> has no method 'get' -
at console.log line in render method below, shows this.member instance should be. member object good. i've spit out string in tpl , it's should be. what's causing error in topic title?
additional info: view subview rendered parent. i'm using backbone.subviews.
thanks lot help. i'm spinning wheels :-/
here code...
edit: changed member object attrib references , works...
template...
<div class="wrap-profile container"> <div class="profile-pic"> <div class="pic"> <img src="<%= pathuploads %><%= member.photo_profile %>" width="400" height="600" id="<%= member.id %>" class="photo-img"> </div> </div> <div class="profile-info"> <div> lorem ipsum dolor sit amet, consectetur adipiscing elit. praesent consectetur urna nec erat pretium tempus. </div> <div> morbi nec arcu @ leo lobortis egestas. phasellus sagittis neque dolor, ut congue lorem egestas id.m laoreet, vitae tristique lorem sollicitudin. </div> <div> in vel libero eget enim rhoncus suscipit. nunc tristique in nisi eget bibendum. mauris et pulvinar orci. </div> <div> quisque eget sem id dolor tempus dictum. pellentesque luctus scelerisque lacinia. </div> <div> sed gravida rutrum bibendum. aenean condimentum eu dui nec adipiscing. duis sagittis pharetra enim. </div> </div> </div>
the view js...
// profileview.js define( function(require) { "use strict"; var $ = require('jquery'), _ = require('underscore'), backbone = require('backbone'), helper = require('helper'), tpl = require('text!templates/profilepictemplate.html'), template = _.template(tpl); return backbone.view.extend({ el: $("#profile"), initialize: function(member) { var self = this; this.member = member; }, render: function() { var data = { pathuploads: helper.global.pathuploads, member: this.member }; console.log(this.member); this.$el.html(template(data)); return this; }, destroy: function() { template = null this.member = null; } }); });
the evidence points quite directly @ this.member
being plain old javascript object instead of instance of backbone.model
subclass. seem aware of this, think it's case of "no really, hear , believe later". test theory, swap in snippet.
var data = { pathuploads: helper.global.pathuploads, member: new backbone.model(this.member) };
if fixes it, theory holds.
(aside...)
for it's worth, making template require backbone model instance instead of plain data inferior, consider having template <%= member.photo_profile %>
instead doesn't care data comes from. makes easier use presenter design pattern. can use member.tojson()
in view @ plain data attributes pass in template.
Comments
Post a Comment