Breezejs + Angular - 如何正确映射数据库属性名称?

时间:2014-05-29 16:19:22

标签: angularjs select mapping breeze ng-options

我有一个工作且可重复使用的自定义<select>指令,该指令通过ng-options填充,以下是摘录:

ng-options="datum.name for datum in data track by datum.id"

当我使用本地测试JSON文件填充它时,这可以正常工作,因为我可以手动定义nameid属性。使用Breezejs(按预期正确拉回数据)时,数据库具有ProductDeviceID,而不是所需的nameid属性。

我希望能够提取数据,但是将ProductDeviceID映射到nameid,这样做可以确保我的自定义{的可重用性目标{ {1}}指令。许多不同的实体需要映射到<select>name,因此这对于可重用性非常重要。

我如何做到这一点?我看过Mapping JSON to entitiesJsonResultsAdapter认为这是正确的方向。不幸的是,这些例子似乎缺少我需要的东西(除非我遗漏了一些东西)。

是否有其他解决方案或方法可以解决此问题?是否有使用breezejs的最佳实践方法?提前感谢您可以放下任何光线。


*找到解决方案

我正在使用这样的自定义指令(但我现在添加了id属性):

options-map

然后在我的可重用<sel-select-box id="selectBoxDevice1" select-size="10" options-map="datum.Product for datum in data track by datum.DeviceID" service-in="deviceSearchDataService" service-in-watch="getDevice1Matches" service-in-restore="getDevice1Selection" service-out="deviceSearchDataService" service-out-send="updateDevice1Selection"> </sel-select-box> 中,我引用了<select>,如此:;

{{optionsMap}}

因此,我现在可以使用众多自定义<select class="form-control" ng-model="selected" ng-change="onChange()" ng-click="onClick()" ng-options="{{optionsMap}}" data-ng-attr-size="{{selectSize}}"> </select> 指令,只需添加<sel-select-box>&#39; s <select>使用的正确地图字符串。

我超级激发了这项工作,并实现了我所希望的灵活性,但我仍然愿意接受改进的想法和/或建议。

1 个答案:

答案 0 :(得分:0)

您是否看过自定义NamingConvention? NC专门用于客户端和服务器端实体属性名称之间的映射业务