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

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -