作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
模型
Network.Models.FeedItem = Backbone.Model.extend({
isPost: function() {
return this.get('template') === 'post';
}
})
Network.Models.Post = Backbone.Model.extend({
urlRoot: '/p',
hasImageInDetails: function() {
if(this.get('details').match(/<img[^<]*>[\w\d]*<\/img>|<img[^\/]*\/>/i)) {
return true
}
}
)}
模板feed_items/post.jst.eco
<% if @model.hasImageInDetails(): %>
has image
<% end %>
观看次数
Network.Views.FeedItemView = Backbone.View.extend({
initialize: function() {
var self = this;
this.template = JST[this.path()];
},
render: function() {
var self = this;
$(this.el).html(this.template({ model: this.model }));
if (this.model.isPost()) {
this.questionView = new Network.Views.FeedItems.Post({
model: this.model,
el: this.$el,
parent: this
});
}
}
});
Network.Views.FeedItems.Post = Backbone.View.extend({
initialize: function() {
this.render();
},
render: function() {
var self = this;
}
});
但是我收到错误:
Uncaught TypeError: Object [object Object] has no method 'hasImageInDetails'
最佳答案
从您的代码看来,您希望 FeedItemView
处理 FeedItem
类型的模型,因为您调用了方法 model.isPost()
,它是在 FeedItem
上定义的。 Eco 找不到的方法是在 Post
模型上定义的,因此从逻辑上讲,其中一个方法将会失败。
您的意思是从 FeedItem
扩展 Post
吗?在这种情况下,而不是:
Network.Models.Post = Backbone.Model.extend({ ... });
您应该这样声明模型:
Network.Models.Post = Network.Models.FeedItem.extend({ ... });
关于javascript - 如何使用 Backbone 生态模板中的自定义模型功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14219022/
我最近遇到了 HFOSS (人道主义免费开源软件)项目以及其他一些公司在做智能电网软件公司和其他类型的绿色软件项目。 由于我正在对该主题进行一些研究,并且因为谷歌在绿色/生态/人道主义/可持续性上的搜
我是一名优秀的程序员,十分优秀!