2015-02-18 81 views
0

微风&角& MV *如何保存小孩的财产?

获得发票对象,并扩大它的必要特性:客户,详细信息等

要访问的细节特性是容易的,invoice.detail [N] .property。并且保存对现有属性(1 - n)的更改也很容易。在我的UI,我只是通过我的对象vm.invoice.details循环得到&显示现有的所有细节,结合他们的输入,编辑随意,调用调用SaveChanges(),完成了!

(记住,在这个UI,我需要完成以下过....)

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

不过,我需要插入一个新的细节到的发票明细现有的阵列。

例如:发票#5具有3点的细节(细节[0],详细[1],详细[2])。我需要插入到这个现有的发票,细节[3],并调用saveChanges()

我试图调用manger.createEntity('invoice'),但它抱怨FK约束。我知道你可以通过值作为createEntity(“OBJ”,newvalues)第二个参数...但正确和唯一的方法?

看起来这应该都容易得多,但是,好,我很茫然,请帮助在那里你可以。 TIA!

回答

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, 
... 

无论哪种方式,微风将新的细节添加到details收集currentInvoice的。

你的问题在方面辐条插Detail。无需手动插入新的Detail,也无法以任何方式管理vm.currentInvoice.details属性的排序顺序。

微风有没有排序的概念收集导航属性。

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

+0

谢谢你的优秀回复! 以下是我如何完成它: 在我的**控制器**中,我调用了一个如下所示的函数:var d = dataservice.createNewDetail(vm.invoice); d.SeqNumber =(vm.invoice.InvoiceDetails.length + 1); vm.invoice.InvoiceDetails.push(d);' 然后我的数据服务功能需要的不过是 'return manager.createEntity('InvoiceDetail')' 我最初按照你的建议接近它,看到我的OP(_I知道你可以在createEntity('obj',newvalues)中传递值作为第二个参数......但这是否正确且唯一的方法?_) – SSIDEV 2015-02-23 14:59:11

+0

我可以接受你的答案吗?事实上,你的建议(虽然不同)会引发一个新问题:哪种方法是_correct_?我想这归结于你MV *环境中最好的效果。如果您发现我的方法存在缺陷或危险,请进一步告知。否则,我们可以称这个关闭。祝一切顺利! – SSIDEV 2015-02-23 15:06:09

+0

在你的情况下,有一点轻微的差异是不重要的。如果您设置了nav属性,Breeze将确保父和子都处于相同的“EntityManager”中(如果不是,则抛出)。如果该发票存在于孩子的经理中,那么设置FK ID不会强加该测试,并且仅将新的子孩“Detail”连接到父母“发票”。鉴于你只有一位经理,这对你来说不是问题。选择最适合你的方法。 – Ward 2015-02-23 21:24:05

0

请确保您有正确的实体名称,因为有时创建实体是不是那么简单,因为它seems.Before正与实体看

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

我会建议你看看乌尔元文件,转到文件的最后一行,可以看到名为“entitySet”的字段

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

检查entityName here i把为“ENTITY_NAME”,然后尝试创建实体和使用该名称

manger.createEntity('Entity_Name'); 
+0

是的。非常好的建议,谢谢。我通过对一些初始值进行硬编码并将它们用作createEntity的第二个参数来测试我的实体正确性。这成功插入了新值并确认我的实体名称正确。 – SSIDEV 2015-02-18 13:55:05