Backbonejs setter返回undefined

时间:2014-10-05 07:46:11

标签: jquery backbone.js

我使用Backbone.Mutators.js js插件来覆盖setter和getter。以下是我的模型

var BuyerModel = Backbone.Model.extend({
    mutators: {
        fullName: {
            get: function () {
                return this.firstName + ' ' + this.lastName;
            }
        }
    }
});

以下是我设置和获取全名的方法。

    var buyerModel = new BuyerModel();

    buyerModel.set({ firstName: 'Joe', lastName: 'Bloggs' });

    console.log(buyerModel.get('fullName')); // returns undefined undefined
    console.log(buyerModel.get('firstName')); // return Joe
    console.log(buyerModel.get('lastName')); // returns Bloggs

为什么fullName会返回undefined undefined以及如何修复它?

2 个答案:

答案 0 :(得分:1)

我不知道mutators插件,但看起来你需要将你的功能更改为

return this.get('firstName') + ' ' + this.get('lastName');

这意味着函数的范围是模型而不是属性子对象。

答案 1 :(得分:1)

模型的属性存储在它的attributes属性中,那些不是实例的直接属性,您应该使用get方法:

return this.get('firstName') + ' ' + this.get('lastName');