KendoUI和微风

时间:2014-02-10 08:19:33

标签: kendo-ui kendo-grid breeze

我正在使用Kendo网格,我将breeze元素绑定到其中

query = IncidentRepositoryService.getQueyObject(['Severity', 'eq', 'Normal']);
        IncidentRepositoryService.getEntitiesByQuery(query).then(function(results) {

            for (var i = 0; i < results.length; i++) {
                unwrapped.push(results[i]._backingStore);
            }
            $scope.incidentDS.data($scope.grid.data);

        });

当我从kendo添加了我从堆栈异常中获取的真实对象时,我不得不添加后备存储。我无法使用后备存储,因为我在breeze类型之上定义了属性,我需要绑定它们

1 个答案:

答案 0 :(得分:0)

我知道这个答案有点迟了。但也许有人仍在寻找这个问题的答案。 您不能在Kendo Grid中使用Breeze Entity,因为它包含循环引用。 您可以使用实验Breeze Kendo Datasource或自己实现一个创建没有循环引用的对象的函数:

// Converts a breeze entity to a kendo data source item.
// Data properties are written to a new objects. Breeze entity
// is moved to __breezeEntity property.
function toKendoItem(entity) {
    if (entity === null || entity === undefined) {
        return entity;
    }

    var props = entity.entityType.dataProperties,
        obj = {};
    props.forEach(function (prop) {
        obj[prop.name] = entity[prop.name];
    });
    obj.__breezeEntity = entity;
    return obj;
}

query = IncidentRepositoryService.getQueyObject(['Severity', 'eq', 'Normal']);
IncidentRepositoryService.getEntitiesByQuery(query).then(function(results) {
    for (var i = 0; i < results.length; i++) {
        unwrapped.push(toKendoItem(results[i]));
    }
    $scope.incidentDS.data($scope.grid.data);
});