当前位置: 首页 > 知识库问答 >
问题:

BackboneJS with HandelbarJS:如何访问模型函数?

杜翰林
2023-03-14

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

这可能会被简化,但我并没有从远程服务中获得类型的选择,但它只是用作临时状态更改。

共有1个答案

叶稳
2023-03-14

如果没有看到你眼中发生的事情,很难分辨。但是你可能有一个渲染函数,看起来像:

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>

我已将is_selected更改为selected以使用属性而不是函数。

另一个选项是修改模型的toJSON函数以包含计算函数:

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;
    }
});
 类似资料:
  • 我使用包来做并行非负矩阵分解,即X=WH。我使用类中的方法。如下面描述中所提到的,所得矩阵存储在中。 在包的GitHub页面中,类是 你能解释一下如何从这个类中提取信息吗? 为了方便起见,我还把笔记本放在这里的Colab上。

  • 但是如果我不知道我想要获得的属性的名称怎么办?比方说,基于设计,模型由开发人员具有一些固定的属性,同时还有用户可以动态设置的特性。 因此,目前我使用并通过使用索引来访问由用户创建的属性,因为我知道我得到的列表将以模型的固定属性作为它的第一个元素,以索引0开头。但我发现这个解决方案不明确而且效率低。也有的时候,说我想工作,不适合。 例如: 每一次的帮助都将得到感激。

  • 我一直不明白为什么我们能够从其他类调用一个类的构造函数。构造函数是一种方法,通常当试图从类中调用方法时,我们必须要么使该方法静态,这样我们就可以以 但是在构造函数的情况下,我们两者都不做。Java如何调用类的构造函数而不执行这些方法中的任何一个?我知道一个类的构造函数必须对你调用它的类可见,也就是说,如果你调用的类构造函数在不同的包中,你必须导入那个包。 那么,Java如何处理调用构造函数,而不必

  • 问题内容: 我想知道如何访问另一个函数中的一个函数。我看到了这样的代码: 那么,还有另一种方法来调用该 函数吗?我的第二个问题是,为什么在最后一行中我不打电话? 很好的解释深表感谢。 问题答案: 不,您不能直接调用它,因为它是的局部变量。 您需要使用,因为调用时返回了函数对象。要执行此功能对象,您需要 在这里您可以直接调用它,因为您可以访问它,因为它是由函数返回的。返回的对象实际上称为 闭包, 因

  • 在web应用程序(基于laravel 5.3的mysql)中,有三个主要模型:、和和许多其他模型(、等)有管理器(另一个在顶层)。 属于。部门组成等级制度。用户有一些角色,例如,允许他查看他的部门和他的部门下面的所有部门的任务。 例如,零级部门的用户可以看到系统中的所有任务。

  • 问题内容: 该模块为通用类型提示提供了一个基类:该类。 方括号中的接受类型参数的子类,例如: 我的问题是,如何访问这些类型参数? 也就是说,作为输入,我如何获得和输出? 基本上我正在寻找这样的功能 问题答案: Python 3.8更新 从Python3.8开始,有: PEP-560还提供了,它允许我们使用第 n 个通用基的参数: 旧答案 可能性1 从Python 3.6开始。有一个公共和()字段。