在下面的render方法的console.log行中,它显示this.member实例正是应该的样子。所以成员对象很好。我在tpl中吐出了字符串,它应该是什么。那么是什么导致了主题标题中的错误?
附加信息:此视图是父级呈现的子视图。我正在使用Backbone.Subviews。
非常感谢你的帮助。我正在转动轮子: - /
这是我的代码......
编辑:更改了成员对象attrib引用,现在它可以正常工作......
模板...
<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 at 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>
视图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;
}
});
});
答案 0 :(得分:3)
证据直接指出this.member
是一个普通的旧javascript对象,而不是Backbone.Model
子类的实例。你似乎意识到了这一点,所以我认为这是一个“不是真的,现在听我们,后来相信我们”的案例。要测试这个理论,请交换此片段。
var data = {
pathUploads: Helper.global.pathUploads,
member: new Backbone.Model(this.member)
};
如果能解决这个问题,理论就成立了。
(除了...)
对于它的价值,让你的模板需要骨干模型实例而不是普通数据可能是劣等的,所以考虑让你的模板做<%= member.photo_profile %>
而不是因为它不关心数据来自何处。这也使得使用演示者设计模式变得更容易。您可以在视图中使用member.toJSON()
来获取普通数据属性以传入模板。