Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js BackboneJS与HandelbarJS:如何访问模型函数?_Backbone.js - Fatal编程技术网

Backbone.js BackboneJS与HandelbarJS:如何访问模型函数?

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>

我正在探索使用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>

含义:我想呈现不同的图标,这取决于是否选择了模型。 然而,我从来没有得到'图标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;
    }
});