2015-02-05 5 views
0

пытается просто вернуть данные сервера обратно в директиве нг-повтора на моем HTML, но это делает пустые <li> элементы:AngularJS нг-Repeat директива выдает

Мой HTML:

<div class="col-md-4"> 
     <ul> 
      <li ng-repeat="dim in settings.dimenDS">{{dim.data.name}}</li> 
     </ul> 
</div> 

В моей JavaScript код контроллера:

(function() { 
'use strict'; 
    angular.module('rage') 
    .controller('GridSettingsCtrl', ['$scope', '$modalInstance', 'datacontext', 'widget', gridSettings]); 

function gridSettings($scope, $modalInstance, datacontext, widget) { 

    var settings = this; 

    settings.myName = "Bob Mazzo"; 

settings.dimenDS = getDimFromServer(); 
function getDimFromServer() { 
     datacontext.getDimensionsFromServer().then(
     function (data) { 
      return data; 
     } 
    ); 
    } 

}; // end of gridSettings()  
})(); 

установка для углового-Bootstrap окна модального, который содержит мой HTML является:

settingsModalOptions: { // config popup 
     templateUrl: 'app/shared/include/grid-config/widget-config-grid.html', 
     controller: 'GridSettingsCtrl as settings' 
} 

Объект data имеет следующую схему:

{ 
"status": "SUCCESS", 
"messages": [], 
"data": [ 
    { 
     "name": "Snapshot_Id", 
     "type": "integer" 
    }, 
    { 
     "name": "tradeId", 
     "type": "varchar" 
    }, 
    { 
     "name": "dealId", 
     "type": "varchar" 
    }, 
    { 
     "name": "BookingCountry", 
     "type": "varchar" 
    }, 
    { 
     "name": "BookingLocation", 
     "type": "varchar" 
    }, 
    { 
     "name": "Broker", 
     "type": "varchar" 
    }, 
    { 
     "name": "BuySell", 
     "type": "varchar" 
    }, 
    { 
     "name": "CCY2", 
     "type": "varchar" 
    }, 
    { 
     "name": "CloseOutNettingAgreementId", 
     "type": "varchar" 
    }, 
    { 
     "name": "CollateralAgreementId", 
     "type": "varchar" 
    }, 
    { 
     "name": "Counterparty", 
     "type": "varchar" 
    }, 
    { 
     "name": "DealDate", 
     "type": "timestamp" 
    }, 
    { 
     "name": "DealIssuer", 
     "type": "varchar" 
    }, 
    { 
     "name": "Delta", 
     "type": "float" 
    }    
] 
} 

Я буду продолжать поиск и устранение неисправностей. Тем временем ваш совет приветствуется.

спасибо, Боб

+2

В 'then' вам необходимо вернуть 'data.data', $ http' then 'разрешаются с объектом ответа, а не только с телом ответа. –

+1

'settings.dimenDS' должен находиться в' $ scope', чтобы быть доступным из представления. Кроме того, учитывая формат вашего ответа, вам нужно сделать так, как указано выше (return data.data), или изменить свой 'ng-repeat' на цикл через' settings.dimenDS.data' и отобразить 'dim.name'. –

+0

@DavidSpence - это область, использующая синтаксис «контроллер как» - 'controller: 'GridSettingsCtrl as settings''. См. Исправленное сообщение выше. Спасибо. –

ответ

0

Для того, чтобы правильно привязать объект settings.dimenDS данных к виду, я удалил return в разделе then() и назначен data.data непосредственно к объекту:

settings.dimenDS = getDimFromServer(); 

    function getDimFromServer() { 
     datacontext.getDimensionsFromServer().then(
     function (data) { 
      settings.dimenDS = data.data;     
     } 
    ); 
    } 

а окончательная html разметка:

<div class="col-md-4"> 
     <ul class="dim-list" kendo-sortable k-placeholder="settings.placeholder" k-hint="settings.hint"> 
      <li ng-repeat="dim in settings.dimenDS">{{dim.name}}</li> 
     </ul> 

    </div> 
Смежные вопросы