将元素添加到导航属性breezejs实体

时间:2014-05-23 17:01:25

标签: angularjs breeze

嗯,我对角度和微风都很新,我有一个名为Collection的实体,其导航属性为products,因为一个集合中可以包含很多产品。

所以,当我点击一个按钮时,我想将该产品添加到该系列中,但我还没有运气,我阅读了breeze.js文档并显然做了类似的事情

collection.products.push(product)

应该有用,但是对此没有任何想法?

这是实体定义

  addType({
    name: 'Collection',
    defaultResourceName: 'collections',
    dataProperties: {
      id: { type: ID },
      name: { max: 255, null: false },
      slug: { max: 255 },
      productsCount: { type: DT.Int16 }
    },
    navigationProperties: {
      products: {
        type: 'Product',
        hasmany: true
      }
    }
  })

这是实际尝试将项目添加到产品的代码

function addToCollection(product){
  logSuccess('Product added to collection');
  //trying to put a product into the collection products, with no luck
  vm.collection.products.push(product);
}

这是列出产品的模板,用户可以将它们添加到集合中。

tbody
    tr(ng-repeat="product in vm.products | inCollection:vm.filter_by")
      td {{ product.master.sku }}
      td {{ product.name }}
      td {{ product.price | currency }}
      td
        img(data-ng-src="{{ product.master.images[0].mini_url }}")
      td.text-center
        .btn-group.btn-group-xs
          a.btn.btn-default(data-ng-click="vm.addToCollection(product)")
            i.fa.fa-plus
        .btn-group.btn-group-xs
          a.btn.btn-default(data-ng-click="vm.removeFromCollection(product)")
            i.fa.fa-minus

我一直在调试,而且breeze没有返回任何goodAdds所以它不会将它添加到集合中,任何想法为什么这不是一个好的添加? BTW,集合N - > N个产品。

1 个答案:

答案 0 :(得分:0)

据我所知,微风并不支持通过导航属性进行修改所以你需要的是2种类型..收集和属性..

 addType({
name: 'Proeprty',
defaultResourceName: 'properties',
dataProperties: {
  id: { type: ID },
  collectionId: { type: int32}
},
navigationProperties: {
  collection: {
    type: 'Collection',
    isScalar: true
  }
}
 })

然后当你想添加它时,你只需确保你设置collectionId Breeze的导航属性不像典型的关系