В настоящее время JavaScript есть везде. Ряд полезных JavaScript-фреймворков, таких как Ember.js, Backbone.js и т. Д., Изменяют облик Интернета. Среди наиболее популярных фреймворков — AngularJS, разработанный Google. Эта статья, первая из трех, научит вас создавать приложение визуализации с использованием AngularJS. Пример приложения будет визуализировать данные с помощью Google Charts API. Мы будем использовать одну из замечательных возможностей Angular для two-way binding
Прежде чем начать, давайте сначала посмотрим, как использовать Google Charts API. Для целей этого приложения мы будем придерживаться некоторых основных диаграмм, таких как линейные диаграммы, круговые диаграммы и т. Д.
Google Charts
Прямо из документации Google Charts, следующий пример дает краткое представление о том, как использовать Google Charts API. Первый скрипт загружает AJAX API. Во втором скрипте первая строка загружает API визуализации и пакет линейной диаграммы. Вторая строка устанавливает обратный вызов для запуска при загрузке API визуализации Google. Функция обратного вызова создает таблицу данных, устанавливает несколько параметров диаграммы, создает экземпляр нашей диаграммы и создает диаграмму.
<html>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('visualization', '1', {packages:['corechart']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Year', 'Sales', 'Expenses'],
['2004', 1000, 400],
['2005', 1170, 460],
['2006', 660, 1120],
['2007', 1030, 540]
]);
var options = {
title: 'Company Performance'
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="chart_div" style="width: 900px; height: 500px;"></div>
</body>
</html>
Если вы новичок в этом API или нуждаетесь в обновлении, я бы рекомендовал прочитать документацию Google Charts .
AngularJS
Прежде чем начать работу с Angular, вы должны:
От терминала перейдите к начальному проекту и затем введите следующие команды:
cd angular-seed
node scripts/web-server.js
Вы должны увидеть следующий вывод сообщения на консоль:
HTTP Server running at http://localhost:8000/
На этом этапе вы можете просмотреть демонстрационную страницу, перейдя по http://localhost:8000/app/index.html
Angular использует шаблон проектирования MVC (Model-View-Controller). В этом уроке мы сосредоточимся на контроллерах. В настоящее время считают контроллером логику, которая обрабатывает определенную часть страницы и отображает данные с использованием представления. Мы получим более полное представление о том, что такое контроллеры, как только начнем писать приложение.
Теперь давайте посмотрим на проект угловых семян. Это шаблон приложения Angular, над которым мы будем строить наше приложение. Внутри углового начального проекта перейдите к app/js
Там мы видим контроллеры, директивы, приложения, фильтры и сервисы. Это то, с чем мы будем играть при создании нашего приложения.
Сборка приложения
Замените код внутри index.html
<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="utf-8">
<title>My AngularJS App</title>
</head>
<body>
<div ng-controller="MyCtrl1">{{name}}</div>
<script src="lib/angular/angular.js"></script>
<script src="lib/angular/angular-route.js"></script>
<script src="js/app.js"></script>
<script src="js/services.js"></script>
<script src="js/controllers.js"></script>
<script src="js/filters.js"></script>
<script src="js/directives.js"></script>
</body>
</html>
Контроллер
Как упоминалось ранее, контроллер содержит логику, которая обрабатывает определенную часть страницы. В предыдущем примере кода обратите внимание на следующую строку:
<div ng-controller="MyCtrl1">{{name}}</div>
Этот div
ng-controller
MyCtrl1
MyCtrl1
app/js/controllers.js
Атрибут ng-controller
директивой . Угловые директивы используются для улучшения HTML, а директива ng-controller
{{name}}
Теперь вопрос в том, как нам получить доступ к name
MyCtrl1
Вот где $scope
$scope
Изучите измененный код controllers.js
'use strict';
/* Controllers */
angular.module('myApp.controllers', []).
controller('MyCtrl1', ['$scope',
function($scope) {
$scope.name = 'Jay';
}
])
.controller('MyCtrl2', [
function() {
}
]);
В предыдущем коде мы передаем $scope
name
Теперь просто перезапустите сервер Node.js, используя следующую команду.
node scripts/web-server.js
Теперь, указав URL браузера на http://localhost:8000/app/index.html
Создание диаграмм
Теперь давайте нарисуем некоторые диаграммы. Сначала включите Ajax API в index.html
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
Затем измените div
index.html
<div ng-controller="MyCtrl1" id="chartdiv"></div>
В controllers.js
google.load('visualization', '1', {packages:['corechart']});
Как только пакет загружен, нам нужно инициализировать наше приложение Angular.
google.setOnLoadCallback(function() {
angular.bootstrap(document.body, ['myApp']);
});
angular.bootstrap
Просто скопируйте и вставьте код создания Google Chart в функцию контроллера, и вот что у нас получилось:
'use strict';
/* Controllers */
google.load('visualization', '1', {
packages: ['corechart']
});
google.setOnLoadCallback(function() {
angular.bootstrap(document.body, ['myApp']);
});
angular.module('myApp.controllers', []).
controller('MyCtrl1', ['$scope',
function($scope) {
var data = google.visualization.arrayToDataTable([
['Year', 'Sales', 'Expenses'],
['2004', 1000, 400],
['2005', 1170, 460],
['2006', 660, 1120],
['2007', 1030, 540]
]);
var options = {
title: 'Company Performance'
};
var chart = new google.visualization.LineChart(document.getElementById('chartdiv'));
chart.draw(data, options);
}
])
.controller('MyCtrl2', [
function() {
}
]);
Перед запуском кода отредактируйте index.html
ng-app="myApp"
html
ng-app
Однако, поскольку мы уже делаем это в коде нашего контроллера (со следующей строкой кода), мы можем удалить его из HTML.
angular.bootstrap(document.body, ['myApp']);
Перезапустите Node-сервер и посетите http://localhost:8000/app/index.html
Вы должны увидеть график, основанный на наших фиктивных данных.
Вывод
В этой части руководства мы сосредоточились на контроллерах Angular. В следующей статье мы сосредоточимся на использовании директив и $ scope. Тем временем весь код из этой статьи доступен на GitHub .