首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用子关联创建空记录Ember-data

使用子关联创建空记录Ember-data
EN

Stack Overflow用户
提问于 2014-02-05 01:49:50
回答 1查看 814关注 0票数 1

我正在尝试创建一个空记录和一个空关联记录。

这里有一个小提琴:http://jsfiddle.net/brancusi/NQKvy/629/

代码语言:javascript
复制
    App = Ember.Application.create({});

    App.IndexRoute = Ember.Route.extend({
      model: function(){
          return this.createEmptyInventory();
      },

      createEmptyInventory: function(){

          var stockLevels = []

          var product1 = this.store.createRecord('product', {name:"Cheese Pizza"});
          var product2 = this.store.createRecord('product', {name:"Mushroom Pizza"});
          var product3 = this.store.createRecord('product', {name:"Calzone"});

          var products = [product1, product2, product3]

          var stockLevelList = []

          scope = this;

          Ember.EnumerableUtils.forEach(products, function(item){
              var stockLevel = scope.store.createRecord('product_stock_level', {
                  product:item,
                  quantity:0
              });

              stockLevelList.addObject(stockLevel);
          });

          var inventory = this.store.createRecord('inventory', {
              testProp:"TestVal",
              productStockItems:stockLevelList
          })

          console.log(stockLevelList);
          console.log(inventory.get('productStockLevels'));

          return inventory;
        }

    });

    // Models

    App.Inventory = DS.Model.extend({
        productStockLevels:DS.hasMany('product_stock_level'),
        testprop:DS.attr('string')
    });

    App.ProductStockLevel = DS.Model.extend({
        inventory:DS.belongsTo('inventory'),
        product:DS.belongsTo('product'),
        quantity:5
    });

    App.Product = DS.Model.extend({
        productStockLevels:DS.hasMany('product_stock_level'),
        name:DS.attr('string')
    });

所以我注意到没有ID,我猜这就是ember所有关联的方式?

我应该如何生成这样的临时记录?

如果用户放弃了这一点,我不想将任何东西持久化到DB,我只想转储记录。

我基本上是在模拟Rails: Inventory.new

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-05 10:58:21

问题不在于产品没有id,而在于您的记录数组。

我不确定是否可以先创建一个记录数组,然后在createRecord上使用它作为属性。从来没有做过这件事,但还没有和安博在一起。但是如果可能的话,我认为它不可能是一个正常的数组,而必须是一个DS.ManyArrayDS.RecordArray或者类似的东西。

我正在使用另一种方法:首先创建没有子记录的父记录,然后使用pushObject将子记录推送给父记录。因此,我会像这样修改createEmptyInventory的代码:

代码语言:javascript
复制
   createEmptyInventory: function(){    
      var stockLevels = []

      var product1 = this.store.createRecord('product', {name:"Cheese Pizza"});
      var product2 = this.store.createRecord('product', {name:"Mushroom Pizza"});
      var product3 = this.store.createRecord('product', {name:"Calzone"});

      var products = [product1, product2, product3]

      scope = this;

      var inventory = this.store.createRecord('inventory', {
          testProp:"TestVal"
      })

      Ember.EnumerableUtils.forEach(products, function(item){
          var stockLevel = scope.store.createRecord('product_stock_level', {
              product:item,
              quantity:0
          });

          inventory.get('productStockLevels').pushObject(stockLevel);
      });

      return inventory;
    }

我对您的JSFiddle进行了分叉和更新,以显示它是否有效。还修正了视图中的一个小错误:http://jsfiddle.net/4YAVq/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21567188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档