如何保存儿童财产?

时间:2015-02-18 00:31:06

标签: angularjs breeze

微风& Angular& MV *

我得到一个发票对象并展开它的必要属性:客户,详细信息等

访问详细信息属性很简单,invoice.detail [n] .property。保存对现有属性(1-n)的更改也很容易。在我的用户界面中,我只需循环访问我的对象vm.invoice.details即可获得&显示所有现有细节,将它们绑定到输入,随意编辑,调用saveChanges(),完成!

(请记住,在此UI中,我还需要完成以下内容....)

现在,我需要插入一个新细节的空白输入。

但是,我需要在现有的发票明细数组中插入新的详细信息。

例如:发票#5有3个细节(详细[0],详细[1],详细[2])。我需要在现有发票中插入详细信息[3],然后调用saveChanges()

我试图调用manger.createEntity('invoice'),但它抱怨FK约束。我知道你可以在createEntity('obj',newvalues)中传递值作为第二个参数......但这是正确且唯一的方法吗?

这样看起来应该都容易得多,但是,我感到很茫然,请尽可能帮助你。 TIA!

2 个答案:

答案 0 :(得分:1)

查看DocCode sample,其中包含针对各种情况的测试,包括此测试。

也许以下内容提供了您正在寻找的洞察力:

function addNewDetail() {
    var newDetail = manager.createEntity('Detail', {
        invoice: vm.currentInvoice,
        ... other initial values
     });

    // the newDetail will show up automatically if the view is bound to vm.details
}

请注意,我正在初始化父invoice导航属性。或者,我可以在初始化程序中设置Detail实体的FK属性:

...
invoiceId: vm.currentInvoice.id,
...

无论哪种方式,Breeze都会将新细节添加到details的{​​{1}}集合。

您的问题以 插入 currentInvoice的方式发言。无需手动插入新的Detail,也无法以任何方式管理Detail属性的排序顺序。

Breeze对集合导航属性没有排序顺序概念

如果您需要按特定顺序显示详细信息,可以将角度绑定的排序过滤器添加到vm.currentInvoice.details

答案 1 :(得分:0)

确保您拥有正确的EntityName,因为有时创建实体并不像看起来那么简单。在使用实体之前,请参阅

  

http://www.getbreezenow.com/documentation/creating-entities

我建议你查看你的元数据文件,转到你文件的最后一行,你可以看到名为" entitySet"的字段。

"entitySet":{"name":"Entity_Name","entityType":"Self.Entity_Name"} 

在这里检查一下entityName作为" Entity_Name"然后尝试创建实体并使用此名称

  manger.createEntity('Entity_Name');