如何获取模型中多行表达式属性的值

How to get value of multi line expression attribute in model

Backbone.Js Cookbook 中有说明,如何使用多行表达式设置默认值。

var InvoiceItemModel = Backbone.Model.extend({
  defaults: {
    description: '',
    price: 0,
    quantity: 1,
    date: function() {
      var date = new Date();
      return date.toISOString();
    }
  }
});

但是,当我尝试访问日期值时:

var invoiceItemModel = new InvoiceItemModel();
console.log(invoiceItemModel.get('date'));

我在 Google Chrome 控制台中得到这个:

该值的正确方法是什么?

您可以使用以下代码设置值:-

var invoiceItemModel = new InvoiceItemModel();
invoiceItemModel.set({description:'New Value'});

对于 get 你可以使用:-

 alert(invoiceItemModel.toJSON().description);

你可以使用这个获取日期值:-

console.log(invoiceItemModel.defaults.date());

Demo

如果您想要设置发票创建日期,您需要计算匿名函数以获得 date 值:

var InvoiceItemModel = Backbone.Model.extend({
  defaults: {
    description: '',
    price: 0,
    quantity: 1,
    date: (function() {
      var date = new Date();
      return date.toISOString();
    })()
  }
});

参见 demo

否则,您在 date 属性中拥有的是您必须调用的函数:

var invoiceItemModel = new InvoiceItemModel();
console.log(invoiceItemModel.get('date')());

参见 demo