Передача параметра обратно в функцию с $eval

Я пытаюсь использовать угловые компоненты начальной загрузки, в частности компонент табуляции. Моя пользовательская директива в настоящее время выглядит так:

        scope: {
            select: '&select'
          },
        template:   '<tabset>' +
                        '<tab ng-repeat="tab in menu.tabs" disabled="tab.disabled" active="tab.active" select="tabSelected($index)">' +
                            '<tab-heading>' +
                                '<i class={{tab.headingClass}}></i> {{tab.title}}' +
                            '</tab-heading>' +
                            '<div ng-include="tab.partial"></div>' +
                        '</tab>' +
                    '</tabset>',

        controller: 'TabBarController',

Выше я могу получить текущий индекс вкладок, используя $indexсервис, и это работает нормально. В контроллере вкладок я могу получить доступ к этому через функцию:

$scope.tabSelected = function (tabIndex) { .. };

Мой HTML (Removal.html) использует директиву и ее select атрибут для передачи функции из собственного контроллера (removal-controller.js) для функции выше, чтобы использовать:

 $scope.tabSelected = function (tabIndex) {
    if ($scope.select){
        $scope.$eval( $scope.select({index : tabIndex}) );
    }
};

Так что, если select получает функцию, он проверяет ее и предполагает вернуть индекс табуляции - проблема в том, что я всегда получаю неопределенный ответ. Ниже HTML, где я делаю ссылку и контроллер удаления, которому нужен индекс табуляции:

<div tab-bar file-url="..."
        select="removalModel.onSelected()"
></div>

$scope.removalModel.onSelected = function(tabIndex){
   cvsBoxService.resetScrollToTop('planoRemovalContainer');
   // Always gets back undefined
   console.log( "Tab index:"+tabIndex );
};

Я надеюсь, что это было понятно.... в любом случае, как вы упаковываете параметр, отправляете его через $ eval и используете его на другой стороне?

Спасибо

Примечание: я также пробовал:

$scope.$eval($scope.select(), {index : tabIndex});

1 ответ

select звонки removalModel.onSelected(), Вы не передаете никаких аргументов onSelected, так tabIndex всегда будет undefined,

Вам нужно что-то вроде removalModel.onSelected(index),

Я не знаю, почему вы используете $scope.$eval,

Другие вопросы по тегам