我不确定这是微风还是OData问题:我想使用orderBy
但是使用两个属性的 max 。
因此,例如,如果动物未指定高度或高度小于动物类型的最小高度,则以下内容会错误地对列表进行排序:
breeze.EntityQuery.from("Animal").orderBy("height, toAnimalType.minimalHeight", true);
我正在考虑以下方面的事情:
breeze.EntityQuery.from("Animal").orderBy("max(height, toAnimalType.minimalHeight)", true);
我查看了OData functions under chapter 4.5,但我认为这是错误的方式,因为A)没有min
/ max
和B)那些是$filter
- 函数(不是orderBy-functions)
答案 0 :(得分:0)
我首先考虑在数据被拉动时将数据列添加到数据中,这样您就可以将该列用于orderBy。对于故障排除来说也更清洁。
答案 1 :(得分:0)
参考John Papa的模型工厂:
(function() {
'use strict';
var serviceId = 'model';
angular.module('app').factory(serviceId, model);
function model() {
// revealing module pattern
var entityNames = {
client: 'Client',
order: 'Order'
... other entity names
};
var service = {
configureMetadataStore: configureMetadataStore,
entityNames: entityNames
};
return service;
function configureMetadataStore(metadataStore) {
registerClient(metadataStore);
};
//#region Internal Methods
function registerClient(metadatastore) {
metadatastore.registerEntityTypeCtor('Client', client);
function client() {
// add calculated 'display' property to client model
// here is where you'd decide min or max
Object.defineProperty(client.prototype, 'display', {
get: function() {
var cn = this.companyName;
var st = this.state;
return cn.padRight('.',60) + st;
}
});
}
Haven已经使用了几年,因为我现在所有的ng4和打字稿都是如此,所以它可能有点粗糙,但可能会给你一个想法。推荐所有这些东西的Pluralsight课程。看看您是否能在github上找到John Papa的Angular Spa for Angular示例代码。