Различия между AngularJS "Отзывчивые" вызовы и добрые старые звонки AJAX?

Я смотрел бесплатный интерактивный курс, опубликованный в angularjs.org, чтобы узнать Angular, Форматирование с помощью Angular js.

На этом курсе в первой главе, которую они говорят, одной из основных причин использования AngularJS является то, что он может создавать "адаптивные" веб-приложения. (Я знаю об "Реагирующем дизайне", но это совсем другое), и объясняя это тем, что с помощью Angular вам не нужно обновлять свою веб-страницу, чтобы обновить ее данными, полученными с веб-сервера (они сообщают вам об этом, как это новый tech!).

Я думаю, что это то же самое, что мы делали последние 10 лет с помощью Ajax? Или это нечто совершенно другое?

Пожалуйста, помогите мне понять это, я новичок в AngularJS.

Ответы

Ответ 1

Из моего представления "Responsive" web apps. означает тип приложения, которое обновляет представление относительно изменения модели (MVC).

Angular Пользовательский интерфейс приложения заполнен наблюдателями. Для каждой переменной, обернутой {{}} в HTML, Angular создает новый наблюдатель, и когда мы обновляем во время кода, запускающего это значение, Angular, используя digest cycle просмотр обновлений соответственно. Или директива ng-repeat, которая создает отдельную область для каждого элемента списка и добавляет наблюдателя.

С другой стороны, в чистом Javascript мне нужно найти свой элемент по id и обновить его вручную.

Рассмотрим следующий пример в Fiddle

HTML

<ul>
    <li ng-click="loadGeo()">click 1</li>
</ul>
<ul> <pre>
      data: {{data|json}}
    </pre>
</ul>

JS

var app = angular.module('myModule', ['ngResource']);

app.controller('fessCntrl', function ($scope, Data) {

    $scope.data = false;

    $scope.loadGeo = function () {
        Data.query()
            .then(function (result) {
            $scope.data = result.data.results[0];
        }, function (result) {
            alert("Error: No data returned");
        });
    }    
});

app.factory('Data', ['$http', '$q', function ($http, $q) {

    var address = 'Singapore, SG, Singapore, 153 Bukit Batok Street 1';
    var URL = 'http://maps.googleapis.com/maps/api/geocode/json?address=' + address + '&sensor=true';

    var factory = {
        query: function () {
            var data = $http({
                method: 'GET',
                url: URL
            });

            var deferred = $q.defer();
            deferred.resolve(data);
            return deferred.promise;
        }
    }
    return factory;
}]);

В начале мы имеем пустой data: $scope.data = false;

Мы нажимаем кнопку, мы получаем данные Geo от factory и заполняем data с помощью вывода Geo. Наш графический интерфейс обновляется без дополнительного кода.

Этот подход я бы назвал "Responsive" web app


Я предлагаю вам прочитать этот отличный пост, написанный Джошем Дэвидом Миллером:

how-do-i-think-in-angularjs-if-i-have-a-jquery-background

Ответ 2

Оба angular и AJAX делают, почти то же самое, но когда дело доходит до лучших, AGULAR - это просто здорово... это делает разработку проще и быстрее. angular имеет то, что называется $stateproviders, $locationProviders и $urlRouterProvider.

Попробуйте это после загрузки кода источника angular.

var app = angular.module('app', ['jssor', 'ui.router', 'main.directive']);

app.config(["$stateProvider", "$locationProvider", "$urlRouterProvider", 
             function ($stateProvider, $locationProvider, $urlRouterProvider){

    $urlRouterProvider.otherwise('/home');

    function newMenu(text, state){
        return {
            text:text,
            state: state
        }
    }

    $stateProvider.state('home', {
        url: '/pages',
        templateUrl: 'content/partials/pages.html'
    })
}])

Затем на вашем index.html

<!DOCTYPE html>
<html ng-app="app">
<head>
<title>My new angularjs app</title>
<link rel="stylesheet" type="text/css" href="content/css/bootstrap.min.css"/>

<div ui-view></div>

<script src="content/js/jquery.min.js"></script>
<script src="content/js/angular.min.js"></script>
<script src="content/js/angular-ui-router.min.js"></script>
<script src="content/js/angular-resource.min.js"></script>
<script src="content/js/angular-route.min.js"></script>
<script src="content/js/bootstrap.js"></script>
<script src="content/js/bootstrap.min.js"></script>
<script src="content/js/jssor/jssor.slider.mini.js"></script>
<script src="content/js/app/jssor-directive.js"></script>
<script src="content/js/app/scroll-directive.js"></script>
<script src="content/js/app/crs-directives.js"></script>
<script src="content/js/app/main.js"></script>