В моем коде я передаю массив объектов JSON из моей службы в свой контроллер, а затем в свою директиву, чтобы затем визуализироваться.Только пройти, когда не определено AngularJS
код в контроллере:
(function(){
'use strict';
angular.module('dashboardApp').controller('DownloadCtrl', DownloadCtrl);
DownloadCtrl.$inject= ['DownloadService','$scope'];
function DownloadCtrl(DownloadService, $scope){
var self=this;
DownloadService.getRoutes()
.then(function(responseData){
self.routes = responseData.data;
});
}
})();
HTML код:
<div class="container" ng-controller="DownloadCtrl">
<donut-chart data='download.routes'></donut-chart>
</div>
Директива Код:
angular.module('dashboardApp').directive('donutChart',function(){
function link(scope,element,attr){
var dataSet = scope.data;
if(dataSet!==undefined){
var chart = c3.generate({
data: dataSet,
type:'donut'
});
}
};
return {
restrict: 'EA',
link : link,
scope: {
data: '='
}
};
});
Если я сфера $ смотреть $ scope.data Я заметил, что. он появляется один раз, и нет назначенных данных, а затем он появляется снова с данными assi к нему. Если у меня нет dataSet! == undefiend, тогда код не удастся.
Он работает с текущей настройкой, но я чувствую, что есть лучший способ, чем просто проверка, если dataSet! == undefined. Я думаю, что я мог бы сделать что-то неправильно или неправильно.
Я хотел бы способ, который позволил бы мне удалить DataSet! == undefiend
Я обычно использую функцию проверки, которая возвращает функцию преждевременно, если не удается 'если (TypeOf scope.data ===«неопределенные») {возвращение}' возвращает без чего-либо и существует константы выглядит функция ранняя. Это предотвращает отсрочку отступов от всего вашего основного кода, который должен выполняться. Не уверен, что это решение, которое вы хотите. Единственный другой способ, с которым я могу думать, всегда указывать значение scope.data из вашего источника данных. – Tschallacka
Спасибо за комментарий. Мне, возможно, придется сделать что-то подобное. Это только во всех книгах или учебниках, которые я читаю, там нет никакой проверки, поэтому я предполагаю, что происходит что-то еще. – Softey