相关疑难解决方法(0)

如何从车把模板访问骨干模型的计算字段?

我想从模板访问我在模型(backbone.js)中实现的计算字段.我是否需要始终定义帮助程序来执行此操作?

我认为问题与我将模型传递给模板的方式有关.如果我传递this.model.toJSON(),我可以访问属性,但不能访问我在其中定义的函数.如果我直接传递this.model,我可以访问该函数,但不能访问骨干模型的属性.

backbone.js handlebars.js

13
推荐指数
1
解决办法
3847
查看次数

Backbone.js - 正确的模型初始化

问题:当存在需要以特定方式存储的属性时,初始化backbone.js模型的正确方法是什么?我是否需要映射不需要任何特殊格式的属性?我以为backbone.js做了某种自动映射.

例:

var MyModel = Backbone.Model.extend({

    initialize: function (options) {

        // These attributes need to be stored in a different format
        // Dates
        this.startYear = new Date(options.startTime).getFullYear();
        // Rounding numbers
        this.wholeNumber = Math.Round(options.numberWithDecimals);
        // Storing empty strings as nulls
        if (options.fullName == null || options.fullName == "") {
            this.fullName == null;
        } else {
            this.fullName = options.fullName;
        }

        // These are fine as they are
        this.fieldA = options.fieldA;
        this.fieldB = options.fieldB;
        this.fieldC = options.fieldC;
    },
});
Run Code Online (Sandbox Code Playgroud)

backbone.js

10
推荐指数
1
解决办法
3万
查看次数

Backbone.js - 如何在模板中使用自定义模型属性?

这可能是一个非常简单的问题,但我很想找到答案.

使用骨干,我有这条线:

Person = Backbone.Model.extend();
Run Code Online (Sandbox Code Playgroud)

然后我在从URL填充的集合中使用它.为了这个例子,假设我有名字和姓,我想做的事情如下:

Person = Backbone.Model.extend({
    FullName: this.get("firstName") + " " + this.get("lastName")
});
Run Code Online (Sandbox Code Playgroud)

我可以使用例如People.first().FullName()来调用内部主干.但是如果我将People.first()传递给我的视图并在模板中呈现它,它似乎不知道FullName是什么.

如何在Backbone中为模型添加自定义属性并在模板中使用?

干杯!

javascript backbone.js handlebars.js

7
推荐指数
1
解决办法
9721
查看次数

Backbone中仅客户端属性

我有一个相当通用的模型和该模型的集合(见下文)我正在处理作为一系列视图的基础.在几个视图中,其中一个模型的选择会生成动作(通过'selected'属性),我需要能够在客户端跟踪选择.

但是,似乎在Backbone中没有干净的方法可以做到这一点.在客户端上模型上添加/更改的任何属性都将同步到服务器.{silent : yes}更改该属性时我无法使用,因为当change事件触发该属性时,我需要触发视图中的更改.我想出这个的唯一方法是覆盖save函数Backbone.Model

我的问题:有没有办法让我缺少客户端唯一的属性,或者我的方法在结构方面存在缺陷,我只是没有看到?

    var CSEvent = Backbone.Model.extend({
        idAttribute: "_id",
        urlRoot : '/api/events',
        defaults: {
            title : "",
            type : "Native",
            repeatOrOneTime : "OneTime",
            selected : false
        }
    });    

    var CSEventCollection = Backbone.Collection.extend({
        model: CSEvent,
        url: '/api/events',
        getSelectedEvent : function() {
            return this.find(function(csevent) { return csevent.get('selected') === true; });
        },
        selectEvent : function(eventId) {
            this.deselectEvent();
            this.get(eventId).set({selected : true});
        },
        deselectEvent : function() {
            this.getSelectedEvent().set({selected : false});
        }
    });
Run Code Online (Sandbox Code Playgroud)

backbone.js

5
推荐指数
1
解决办法
1917
查看次数

标签 统计

backbone.js ×4

handlebars.js ×2

javascript ×1