【问题标题】:backbone model to have property of another backbone model主干模型具有另一个主干模型的属性
【发布时间】:2013-03-22 07:12:54
【问题描述】:

我不知道 JS/Backbone 是否支持这一点,但如果我有一个主干模型,我可以将它用作另一个主干模型的属性吗?

例如

var Address = Backbone.Model.extend({
  street: ''
});

var Person = Backbone.Model.extend({
  name: '',
  Address: ''
});

var p1 = new Person();
p1.set('name', 'crystal');
console.log(p1.get('name'));
p1.set('Address.street', '1234');
console.log(p1.get('Address.street'));

这是 Backbone 应该如何用于组合对象的方式吗?谢谢。

【问题讨论】:

    标签: javascript backbone.js


    【解决方案1】:

    您可以考虑使用Backbone-Relational

    它增加了对模型之间嵌套双向关系的支持,例如一对一、一对多。

    【讨论】:

      【解决方案2】:

      为什么不让Person 模型中的address 条目成为Address 模型的新实例?

      例如

      var Address = Backbone.Model.extend({
        street: ''
      });
      
      var Person = Backbone.Model.extend({
        name: '',
        address: null
      });
      
      var p = new Person;
      p.set('address', new Address({street: 'crystal'}));
      p.get('address').get('street');
      

      【讨论】:

        【解决方案3】:

        当然,您可以使用任何 JavaScript 有效对象(包括 Backbone 模型对象)设置模型属性。但是请注意避免嵌套模型太深,因为您不想要一个需要您对每个级别访问进行空检查的深层属性访问链:

        p.get('parent').get('child').get('child').get('child').get('prop');

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-25
          • 2016-02-22
          • 1970-01-01
          • 1970-01-01
          • 2014-10-08
          • 2013-09-23
          相关资源
          最近更新 更多