2014-10-05 32 views
0

我正在使用Backbone.Mutators.js js插件来覆盖setter和getter。以下是我的模型Backbonejs setter返回undefined

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以及如何解决它?

+0

有任何错误控制台?为你的mutator get方法设置断点并检查它是否被调用,并包含在'this'中 – aleha 2014-10-05 07:51:34

回答

1

我不知道的存取器插件,但它会出现,你需要你的函数改为

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

这意味着该函数的范围是模型没有属性的子对象。该模型的

1

属性存储在它的attributes财产,这些都不是实例的直接性,你应该使用get方法:

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