我正在尝试使用角度引导程序组件,特别是选项卡组件。我的自定义指令目前看起来像这样:
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
属性从其自己的控制器(removed-controller.js)传递一个函数,用于上述函数,以便使用:
$scope.tabSelected = function (tabIndex) {
if ($scope.select){
$scope.$eval( $scope.select({index : tabIndex}) );
}
};
因此,如果选择收到一个函数,它会检查它并假设传回选项卡索引 - 问题是我总是回来未定义。下面是我正在建立链接的html和需要tab-index的删除控制器:
<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});
答案 0 :(得分:0)
select
来电removalModel.onSelected()
。您不会将任何参数传递给onSelected
,因此tabIndex
始终为undefined
。
您需要removalModel.onSelected(index)
之类的内容。
我不知道您使用$scope.$eval
的原因。