如何利用mappingcontext.processAnonType

时间:2015-03-24 21:24:50

标签: breeze

我们使用breezejs从服务器获取实体和非实体...对于非实体我们想要弄乱返回的对象,特别是我们想要设置他们的原型...在单步执行微风代码之后看起来这样做的最佳位置是MappingContext下面的函数...这里我们可以访问“结果”,这是breeze返回给客户端的对象,我们也可以访问“$ type”属性“节点”。有了这些信息,我们可以通过解析$ type和更新结果来找到一个构造函数,这样结果看起来就像找到的构造函数的一个实例......有没有可以帮助我的拦截点?我的问题是当对象被微风移交时,我无法访问我需要的“node。$ type”属性以便找到构造函数...谢谢

function processAnonType(mc, node) {
        // node is guaranteed to be an object by this point, i.e. not a scalar          
        var keyFn = mc.metadataStore.namingConvention.serverPropertyNameToClient;
        var result = {};

        __objectForEach(node, function (key, value) {
            var newKey = keyFn(key);
            var nodeContext = { nodeType: "anonProp", propertyName: newKey };
            visitNode(value, mc, nodeContext, result, newKey);
        });
        return result;
    }

1 个答案:

答案 0 :(得分:1)

实际上,我认为您可以使用自定义 jsonResultsAdapter 来完成所需操作。请参阅:http://www.getbreezenow.com/documentation/jsonresultsadapters

在visitNode方法中,您可以修改传入的节点'对象或创建一个新对象(通过返回哈希上的'节点'属性)。如果节点不是实体,那么您返回的任何内容都将通过而无需修改到您的客户端。