2015-09-25 3 views
2

Я написал директиву для treeList и привязал данные к нему из удаленного вызова службы. Ниже приведен код для TreeListDataSource в методе связи директивы:Kendo treeList datasource - не связывается с удаленными данными

scope.treeListOptions.dataSource = new kendo.data.TreeListDataSource({ 
 
    transport: { 
 
    read: function(options) { 
 
     scope.getData().then(function(dataToBeDisplayed) { 
 
     options.success(dataToBeDisplayed); 
 
     }, function(error) { 
 
     $log.error(error); 
 
     }); 
 
    }, 
 
    error: function(e) { 
 
     alert(e.status + e.errorThrown); 
 
    }, 
 
    }, 
 
}); 
 

 
scope.treeListOptions.dataSource.read();

Ниже приводится TreeList определение директивы:

var TreeListDirectiveDefinition = { 
 
    restrict: 'E', 
 
    replace: true, 
 
    template: '<div><kendo-treelist k-options="treeListOptions"></kendo-treelist></div>', 
 
    scope: { 
 
    columns: '=', 
 
    getMethod: '&' 
 
    }, 
 
    link: linkTreeList 
 
};

Когда я вижу данные связанный с scope.treeListOptions.dataSource.data(), есть человек у новых свойств добавлен, как показано ниже:

// parent element 
 
C.define.init 
 
PartExamined: "test" 
 
StudyUid: "1.3.6.1.4.1.30071.8.56809868014.4964677242993979.234.56616" 
 
_events: Object 
 
_loaded: true 
 
dirty: false 
 
hasChildren: true 
 
id: 1 
 
parent:() 
 
parentId: null 
 
parentIdField: "parentId" 
 
uid: "1ca6302c-b1ad-493f-b002-d2032a548a80" 
 
__proto__: i.extend.i 
 

 

 
//child element 
 
C.define.init 
 
PartExamined: "test2" 
 
SeriesInstanceUid: "1.3.6.1.4.1.30071.8.56809868014.4964677242993979.234.56617" 
 
_events: Object 
 
_loaded: true 
 
dirty: false 
 
hasChildren: false 
 
id: 2 
 
parent:() 
 
parentId: 1 
 
parentIdField: "parentId" 
 
uid: "953bc7a7-e5e8-4f26-a120-b13402c6cce4" 
 
__proto__: i.extend.i

Свойства как родителя:(), parentIdField: "ParentId", _loaded: правда, грязная ложь, HasChildren: истинно добавляют TreeListDataSource.

Это правильный формат данных? потому что TreeList показывает «Нет записей для отображения».

Может ли кто-нибудь помочь мне исправить эту проблему?

ОБНОВЛЕНО Вот ссылка на угловой директивы, созданной для TreeList: http://jsfiddle.net/yuqorcvL/15/

директива по-прежнему не работает. Любая помощь будет оценена.

Спасибо.

ответ

2

Вы должны добавить schema в scope.treeListOptions.dataSource

schema: { 
         model: { 
          id: "EmployeeID", 
          parentId: "ReportsTo", 
          fields: { 
           ReportsTo: { field: "ReportsTo", nullable: true }, 
           EmployeeID: { field: "EmployeeId", type: "number" }, 
           Extension: { field: "Extension", type: "number" } 
          }, 
          expanded: true 
         } 
        } 

взгляд that example в кэндо документы

+0

пример я создал в этой ссылке работает без схемы: [ссылка] (http://dojo.telerik.com/akAwe/4). Любое другое решение? – user2439903

+0

Что внутри 'data'' var treeList = $ ("# treeList"). Data ("kendoTreeList"); var data = treeList.dataSource.data(); '? –

+0

Формат данных в вашем сообщении правильный. Дополнительные поля создаются оболочкой kendo 'TreeListDataSource'. –

Смежные вопросы