@microf

Как работать с контроллером в директиве?

Чего то я туплю с утра.
Делаю директиву, которая должна выдавать список, полученный из сервиса
(function () {
    'use strict';
    angular
            .module('admin')
            .directive('addToCart', addToCart);
    function addToCart() {
        var directive = {
            link: link,
            template: '<div ng-repeat="item in items">{{item.name}}</div>',
            restrict: 'EA',
            controller: AddToCartController,
            conrollerAs: 'addto'
        };

        return directive;

        function link(scope, element, attrs,ctrl) {
             
        }

        AddToCartController.$inject = ['Product'];

        function AddToCartController(Product) {
            var vm = this;
            vm.items = Product.query();
                   }
    }
})();

А вот получил яvm.items
Мне же надо его как то связать в link или что? Прошу прощения за такой вопрос, ну что то на самом деле туплю

Update Ну да. Наверное надо передать $scope.items = vm.items; в линк
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
вам не нужен тут link. Единственное что вам тут нужно - указать изолированный скоуп что бы нбыло конфликтов с другими директивами.

return {
            template: '<div ng-repeat="item in items">{{item.name}}</div>',
            restrict: 'EA',
            controller: AddToCartController,
            conrollerAs: 'addto',
            scope: {}
        };


link нужен только в случае, если у вас для коректной работы директивы
- есть необходимость поработать с DOM, например ивенты понавешивать или еще чего
- есть необходимость следить за изменением данных в атрибутах (attr.$observe и scope.$watch только в link), что бы дернуть метод контроллера
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы