Передача параметра обратно в функцию с $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
,