2016-02-19 1 views
0

Я пытаюсь отобразить данные, которые я получил с помощью вызова rest в таблице ui-grid. Когда я привязываю данные к переменной области видимости и пытаюсь вызвать ее на странице html, она дает TYPEERROR: typeerror не может считывать свойства «данных» неопределенных угловых символов. Я думаю, что он не может получить данные и, следовательно, ошибку. Может кто-нибудь наставит меня, как к тому, что мне не хватает в коде ниже:Отображать данные в u-сетке после совершения отдыха.

.controller("widgetCtrl", ["logger", "$scope", "$http", "widgetService", "localizationService", 
     "gettextCatalog", 
     function (logger, $scope, $http, widgetService, localizationService, gettextCatalog) { 
     var myuid; 
     var myrole; 
     var locale = localizationService.getLocale(); 
     gettextCatalog.loadRemote("/dashboardplugins/B27F0520-86CF-1033-B9C8-005056A891F8/resources-locale_" + 
     locale + ".json"); 
     logger.info("WidgetContoller started"); 
     $scope.gridOptions = {}; 
     /** 
     * load function 
     * 
     */ 
     $scope.load = function() { 
      widgetService.getData().then(function (response) { 
       $scope.mydata = response; 
       $scope.myrole = response.roles[0].split("/").pop(); 
       $scope.myuid = $scope.myuid = response.meta["@href"].split("/").pop(); 
       $scope.gridOptions = { 
        excludeProperties: "__metadata", 
        data: [ 
         { 
          id: $scope.myuid, 
          name: response.name, 
          role: $scope.myrole, 
          state: response.state 
         } 
        ], 
        columnDefs: [ 
         {name: "ID", field: "id"}, 
         {name: "Name", field: "name"}, 
         {name: "role", field: "role"}, 
         {name: "state", field: "state"} 
        ], 
        i18n: [ 
        ] 
       }; 
      }); 
     }; 
     $scope.load(); 

Html страница:

<div ng-Controller="widgetCtrl"> 
    <h1>User Info</h1> 
    <div ui-grid="gridOptions"></div> 
</div> 

JSON объект данных:

Object {data: Object, status: 200, config: Object, statusText: "OK"} 
config: Object 
data: Object 
auth-source: "DATABASE" 
createdate: "2016-02-10T20:47:48.408Z" 
creator: Object 
meta: Object 
moddate: "2016-02-10T20:47:48.408Z" 
modifier: Object 
name: "admin" 
perms: Object 
roles: Array[1] 
state: "ACTIVE" 
sys: false 
tenant-id: 1 
tenant-name: "default" 
__proto__: Object 
headers: (name) 
status: 200 
statusText: "OK" 
__proto__: Object 

ответ

0

Похоже, что вы не обратитесь к $scope.gridOptions за пределами своей функции getData, поэтому попробуйте установить $scope.gridOptions = {}; где-то над вызовом getData(). Я думаю, что undefined в вашей ошибке относится к $scope.gridOptions, предполагая, что вы опубликовали выше результаты своей функции logger, которая проверяет, что вы получаете данные от своего сервисного вызова.

+0

Спасибо! добавление $ scope.gridOptions = {}; помогли сбросить неопределенную ошибку данных. Но данные по-прежнему не отображаются. Как вы думаете, может быть причиной непоследовательной структуры объекта Json? – user2128

+0

Трудно понять, что, не зная, как выглядят ваши возвращенные данные JSON ... то, что вы показываете выше, не является JSON, но вы должны иметь доступ к нему с помощью 'response.data.data'. Можете ли вы создать плункер или добавить данные JSON в свой вопрос? Несмотря на это, вы можете массировать данные во что-то, что будет отображаться, как только вы получите его на клиенте. –

+0

Да, я внес некоторые изменения и данные отображаются. Но я не доволен своим кодом. Обычно я не предпочитаю такой жесткий кодированный подход. – user2128