我有一个工作且可重复使用的自定义<select>
指令,该指令通过ng-options
填充,以下是摘录:
ng-options="datum.name for datum in data track by datum.id"
当我使用本地测试JSON文件填充它时,这可以正常工作,因为我可以手动定义name
和id
属性。使用Breezejs(按预期正确拉回数据)时,数据库具有Product
和DeviceID
,而不是所需的name
和id
属性。
我希望能够提取数据,但是将Product
和DeviceID
映射到name
和id
,这样做可以确保我的自定义{的可重用性目标{ {1}}指令。许多不同的实体需要映射到<select>
和name
,因此这对于可重用性非常重要。
我如何做到这一点?我看过Mapping JSON to entities和JsonResultsAdapter认为这是正确的方向。不幸的是,这些例子似乎缺少我需要的东西(除非我遗漏了一些东西)。
是否有其他解决方案或方法可以解决此问题?是否有使用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>
使用的正确地图字符串。
我超级激发了这项工作,并实现了我所希望的灵活性,但我仍然愿意接受改进的想法和/或建议。
答案 0 :(得分:0)
您是否看过自定义NamingConvention? NC专门用于客户端和服务器端实体属性名称之间的映射业务