вызов функции контроллера из функции связи

0

Я пытаюсь вызвать функцию в контроллере из функции ссылок. Из функции контроллера я должен вызвать вызов службы отдыха. (Я попробовал позвонить в службу поддержки из функции ссылок, но я не получил успеха. Поэтому я пытаюсь вызвать функцию контроллера из ссылки, и оттуда я буду называть службу отдыха).

Мой код выглядит следующим образом.

app.directive('collection', function() {
    return {
        restrict: "E",
        replace: true,
        scope: {
            collection: '=',
            articleData: '=',
            articleContent: '='
        },
        template: "<ul><member ng-repeat='member in collection' member='member' article-data='articleData' article-content='articleContent'></member></ul>"
    }
});

app.directive('member', function($compile,$http) {
    return {
        restrict: "A",
        replace: true,
        scope: {
            member: '=',
            articleData: '=',
            articleContent: '='
        },
        template: "<div><li><a href='#' ng-click='getContent(member.itemId)'>{{member.title}}</a></li></div>",
        link: function(scope, element, attrs) {
            scope.getContent = function(itemId) {

                 scope.testFunction(itemId);
            }

            if (angular.isArray(scope.member.tocItem)) {
                if (scope.member.hasChildren == "true") {
                    for (var i = 0; i < scope.member.tocItem.length; i++) {
                        if (scope.member.tocItem.title) {
                            scope.member.tocItem.title.hide = true;
                        }
                    }
                }
                element.append("<collection collection='member.tocItem'></collection>");    
                $compile(element.contents())(scope)
            }
        }
    }
});

app.controller('apdController', function($scope, getTocService,$location) {
    var bookId = $location.search().id;
    var sampdata = getTocService.getToc(bookId);
    $scope.tasks =sampdata;
    //$scope.tasks = data;

    var artData = getTocService.getArtData('PH1234');
    $scope.articleContent = artData;

    $scope.testFunction = function(itemId){
         alert("called.....");
        }
});

Здесь я пытаюсь вызвать testFunction из link.From testFunction, я планирую позвонить в службу отдыха. Но получение undefined не является функциональной ошибкой. Кто-то может помочь? Кроме того, пожалуйста, дайте мне знать, это правильный подход (от функции ссылки до контроллера и от контроллера для отдыха. Поскольку моя временная линия меньше, я не мог придумать какой-либо другой подход)

  • 1
    Посмотрите на $emit и / или $broadcast , это то, что вам нужно.
Теги:
rest

1 ответ

0

Что делает testFunction? У вас разные варианты. Если testFunction вызывает услугу отдыха, вы обязательно должны перенести ее в службу.

app.factory('restService', function($http) {
    function testFunction(itemId){
       // Whatever you need
       return $http.get('myUrl');
    } 

    return  {
       testFunction: testFunction
    }
});

Затем введите его в свою директиву

app.directive('member', function($compile, $http, restService) {
    ...
    link: function(scope, element, attrs) {
        scope.getContent = function(itemId) {
             restService.testFunction(itemId);
        }

        ....
    }
});

Таким образом, вы также можете вызвать его в своем контроллере, если он вам когда-либо понадобится. Если вместо этого вам нужно что-то сообщить контроллеру, вы можете использовать сигналы.

  • 0
    из testFunction позвоню в сервис. На данный момент, я поставил предупреждение, чтобы увидеть, что контроль приходит к этому методу.
  • 0
    вы можете поставить предупреждение внутри restService

Ещё вопросы

Сообщество Overcoder
Наверх
Меню