Category Archives: Angular.js
AngularJS: $watch за объектами
Чтобы не вызывалась лишний раз функция, нужно добавить еще один параметр true в $watch:
1 2 3 |
$rootScope.$watch('session', function (value) { $scope.profile = ProfileDataService.get(); }, true); |
Но он иногда запускает обработчик, поэтому можно сделать внутри дополнительную проверку:
1 2 3 4 5 |
$rootScope.$watch('session', function (value, valueOld) { if (! angular.equals(value, valueOld)) { $scope.profile = ProfileDataService.get(); } }); |
AngularJS: провайдеры
Вот пример конфигурируемого провайдера JS Bin
npm для AngularJS
http://ngmodules.org/modules
AngularJS: добавить заголовки ко всем запросам к серверу
1 2 3 4 5 6 7 |
angular.module("YourAppModule", []).config(["$httpProvider", function($httpProvider) { $httpProvider.defaults.headers.common['custom'] = 'custom_val'; $httpProvider.defaults.headers.put['Content-Type'] = 'application/x-www-form-urlencoded'; $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; }]); |
Объяснение работы AngularJS путём создания своего AngularJS
Начало серии статей. http://teropa.info/blog/2013/11/03/make-your-own-angular-part-1-scopes-and-digest.html Уровень подготовки читателя — средний. Объём текста — большой. Перевод — http://habrahabr.ru/post/201832/ (не читал).
AngularJS 1.2.0 вышел
Да, то чего так долго ждали, о чём так долго говорили большевики, свершилось! http://blog.angularjs.org/2013/11/angularjs-120-timely-delivery.html Animations and Transitions — самое главное, чего ждали Better error messages (including error minification) Strict Contextual Escaping Track By function to prevent duplicates in ng-repeat Controller As syntax to access controller instances in templates Promise A+ Compliance (http://promises-aplus.github.io/promises-spec/) Separation of ngRoute …
AngularJS: особенности ng-switch (и, возможно, ng-if)
Элементы с директивой ng-switch-when(ng-switch-default) вставляются в конец DOM. И поэтому, к примеру, список будет выводиться не в том порядке, как это задумано. В таких случаях лучше использовать ng-show/ng-hide
1 2 3 4 5 6 7 |
<div ng-app ng-controller="MyCtrl">{{val}} <ul ng-switch="val"> <li>1</li> <li ng-switch-when="1">2</li> <li>3</li> </ul> </div> |
AngularJS Unknown provider: $scopeProvider <- $scope <- selectorDirective
Такая ошибка может возникнуть при создании новой директивы, особенно при выносе контроллера в директиву. Скорее всего, она возникла из-за того, что была объявлена зависимость от $scope, например:
1 2 3 4 5 6 7 8 9 10 11 12 |
directives.directive('selector', [<strong>'$scope'</strong>, 'GeoSelect', function selectorGeoExtended(<strong>$scope</strong>, GeoSelect) { return { restrict: 'AE', replace: true, scope: {}, template: '<div></div>', link: function ($scope) { // @debug console.log($scope); } }; }]); |
Объявление директивы нужно заменить на
1 |
directives.directive('selector', ['GeoSelect', function selectorGeoExtended(GeoSelect) { |
Dirty checking в AngularJS и производительность
Misko Havery рассуждает о производительности data-binding в AngularJS: http://stackoverflow.com/questions/9682092/databinding-in-angularjs/9693933#9693933
Как написать приложение Google Chrome на AngularJS
http://www.ng-newsletter.com/posts/chrome-apps-on-angular.html