Оглавление:
Карта сайта:
Оглавление:
Карта сайта:
Это старая версия документа!
Я постоянно нахожу что-то новое в Angular 1.3. Одна из вещей, которые я нашел, - это атрибут bindToController. Я сторонник использования синтаксиса controllerAs, чтобы избавиться от переменной $scope. Единственная проблема раньше заключалась в том, что в директиве вам все еще приходилось использовать $scope… до сих пор.
Давайте сначала посмотрим, что в документации AngularJS говорится об атрибуте bindToController:
Когда для компонента используется изолированная область (см. Выше) и используется controllerAs, bindToController: true позволит компоненту привязать свои свойства к контроллеру, а не к области. При создании экземпляра контроллера исходные значения привязок изолированной области уже доступны.
Раньше переменные области видимости не включались в область действия контроллера при использовании controllerAs. Это означает, что переменные области действия директивы не были привязаны к объекту, созданному controllerAs. Атрибут bindToController исправляет это.
пример кода со $scope
<html ng-app="app"> <head> <title></title> <script src="http://crm.localhost/vendor/angular/angular.min.js"></script> <link href="../bootstrap-theme.css" rel="stylesheet" /> <link href="../bootstrap.css" rel="stylesheet" /> <script> angular.module("app", []) .controller("studyCtrl", function ($scope) { $scope.count = 5; }) .directive('counter', function counter() { return { scope: { count: '=' }, controller: function ($scope) { function increment() { $scope.count++; } function decrement() { $scope.count--; } $scope.increment = increment; $scope.decrement = decrement; }, template: [ '<div class="form-group">', '<label class="control-label col-md-1" for="">Директива</label>', '<div class="input-group col-md-2">', '<div class="input-group-addon" ng-click="decrement();">-</div>', '<input class="form-control" type="text" ng-model="count">', '<div class="input-group-addon" ng-click="increment();">+</div>', '</div>', '</div>' ].join('') }; }); </script> </head> <body ng-controller="studyCtrl as vm"> <div class="container"> <br> <div class="row"> <div class="col-md-1"><b>контроллер</b></div> <div class="col-md-2">{{count}}</div> </div> <br> <div class="row"> <label><counter count="count"></counter></label> </div> </div> </body> </html>