如何保存 child 属性?
How to save child properties?
Breeze & Angular & MV*
我收到一张发票 object 并扩展它的必要属性:客户、详细信息等。
访问详细属性很容易,invoice.detail[n].属性。保存对现有属性 (1 - n) 的更改也很容易。在我的 UI 中,我只是循环遍历我的 object vm.invoice.details 以获取并显示所有现有详细信息,将它们绑定到输入,随意编辑,调用 saveChanges(),完成!
(记住,在这个UI中,我也需要完成以下内容....)
现在,我需要插入一个新的详细信息的空白输入。
但是,我需要在现有的发票详细信息数组中插入一个新的详细信息。
例如:发票 #5 有 3 个详细信息(详细信息[0]、详细信息[1]、详细信息[2])。我需要插入现有发票 detail[3],然后调用 saveChanges()
我尝试调用 manger.createEntity('invoice') 但它抱怨 FK 限制。我知道您可以在 createEntity('obj', newvalues) 中将值作为第二个参数传递...但这是正确且唯一的方法吗?
看起来这一切都应该容易得多,但是,我很茫然,所以请尽可能提供帮助。 TIA!
确保您拥有正确的 EntityName,因为有时创建实体并不像它那样简单 seems.Before 使用实体请参阅
我建议您查看您的元数据文件,转到文件的最后一行,您可以看到名为 "entitySet"
的字段
"entitySet":{"name":"Entity_Name","entityType":"Self.Entity_Name"}
检查我这里的实体名称 "Entity_Name" 然后尝试创建实体并使用这个名称
manger.createEntity('Entity_Name');
看看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 都会将新的详细信息添加到 currentInvoice
的 details
集合中。
您的问题涉及 插入 新 Detail
。无需手动插入新的 Detail
,并且您无法以任何方式管理 vm.currentInvoice.details
属性 的排序顺序。
Breeze 没有集合导航属性的排序顺序概念。
如果您需要以特定顺序显示详细信息,您可以将排序过滤器添加到 angular 绑定到 vm.currentInvoice.details
。
Breeze & Angular & MV*
我收到一张发票 object 并扩展它的必要属性:客户、详细信息等。
访问详细属性很容易,invoice.detail[n].属性。保存对现有属性 (1 - n) 的更改也很容易。在我的 UI 中,我只是循环遍历我的 object vm.invoice.details 以获取并显示所有现有详细信息,将它们绑定到输入,随意编辑,调用 saveChanges(),完成!
(记住,在这个UI中,我也需要完成以下内容....)
现在,我需要插入一个新的详细信息的空白输入。
但是,我需要在现有的发票详细信息数组中插入一个新的详细信息。
例如:发票 #5 有 3 个详细信息(详细信息[0]、详细信息[1]、详细信息[2])。我需要插入现有发票 detail[3],然后调用 saveChanges()
我尝试调用 manger.createEntity('invoice') 但它抱怨 FK 限制。我知道您可以在 createEntity('obj', newvalues) 中将值作为第二个参数传递...但这是正确且唯一的方法吗?
看起来这一切都应该容易得多,但是,我很茫然,所以请尽可能提供帮助。 TIA!
确保您拥有正确的 EntityName,因为有时创建实体并不像它那样简单 seems.Before 使用实体请参阅
我建议您查看您的元数据文件,转到文件的最后一行,您可以看到名为 "entitySet"
的字段"entitySet":{"name":"Entity_Name","entityType":"Self.Entity_Name"}
检查我这里的实体名称 "Entity_Name" 然后尝试创建实体并使用这个名称
manger.createEntity('Entity_Name');
看看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 都会将新的详细信息添加到 currentInvoice
的 details
集合中。
您的问题涉及 插入 新 Detail
。无需手动插入新的 Detail
,并且您无法以任何方式管理 vm.currentInvoice.details
属性 的排序顺序。
Breeze 没有集合导航属性的排序顺序概念。
如果您需要以特定顺序显示详细信息,您可以将排序过滤器添加到 angular 绑定到 vm.currentInvoice.details
。