Backbone.js BackboneJS与HandelbarJS:如何访问模型函数?
我正在探索使用HandelbarsJS和主干的设置 这是我的模板的一部分:Backbone.js BackboneJS与HandelbarJS:如何访问模型函数?,backbone.js,Backbone.js,我正在探索使用HandelbarsJS和主干的设置 这是我的模板的一部分: <a href="#genre/{{ name }}" class="genre-item" data-genre="{{ name }}"> <i class="icon-chevron-{{#if is_selected }}down{{else}}right{{/if}}"></i> {{ display_name }} ({{ total }}) </a>
<a href="#genre/{{ name }}" class="genre-item" data-genre="{{ name }}">
<i class="icon-chevron-{{#if is_selected }}down{{else}}right{{/if}}"></i>
{{ display_name }} ({{ total }})
</a>
含义:我想呈现不同的图标,这取决于是否选择了模型。
然而,我从来没有得到'图标V形下降',但总是'图标V形正确'的路径。
你知道我遗漏了什么吗
编辑
类型的选择在模型级工作,如下所示:
MA.Models.Genre = Backbone.Model.extend({
defaults: {
selected: false
},
is_selected: function() {
return (this.get('selected') == true);
},
toggle: function() {
if (this.is_selected()) {
this.set('selected', false);
}
else
{
this.set('selected', true);
}
}
});
MA.Collections.Categories = Backbone.Collection.extend({
model: MA.Models.Genre
});
MA.Models.Genre=Backbone.Model.extend({
默认值:{
所选:false
},
是否选择了_:函数(){
返回(this.get('selected')==true);
},
切换:函数(){
如果(选择了this.is_()){
此.set('selected',false);
}
其他的
{
此.set('selected',true);
}
}
});
MA.Collections.Categories=Backbone.Collection.extend({
型号:MA.Models.GREEP
});
这可能会被简化,但我没有从远程服务中获得类型的选择,但它只是用作临时状态更改。如果看不到您的视图中发生了什么,很难判断。但您可能有一个如下所示的渲染函数:
HandlebarsTemplate['templatename'](this.model.toJSON());
toJSON
默认情况下仅包括模型属性。此外,车把不会像那样在飞行中评估功能
最简单的解决方案是将模板修复为:
<a href="#genre/{{ name }}" class="genre-item" data-genre="{{ name }}">
<i class="icon-chevron-{{#if selected }}down{{else}}right{{/if}}"></i>
{{ display_name }} ({{ total }})
</a>
我的问题是,我没有调用呈现,只是调用html的显示/隐藏部分。所以,我想,我需要重新渲染视图。注意JSON是正确的。
MA.Models.Genre = Backbone.Model.extend({
defaults: {
selected: false
},
is_selected: function() {
return (this.get('selected') == true);
},
toJSON: function(options) {
var attrs = _.clone(this.attributes);
attrs.is_selected = this.is_selected();
return attrs;
}
});