2014-09-24 52 views
0

我正在嘗試使用角引導組件,特別是選項卡組件。我的自定義指令,目前看起來是這樣的:

 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屬性,從它自己的控制器(去除-controller.js)功能以通爲上面的功能進行使用:

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

所以,如果選擇接收它會檢查它,並假設傳回的選項卡索引功能 - 問題是,我總是回來不確定。下面就是我正在做需要的標籤索引鏈接和去除控制器的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}); 
+0

這一切都有點令人困惑,但我一次看到的是在HTML中使用'$ index',而在代碼中調用'select'時使用'index'。 – zeroflagL 2014-09-24 11:08:08

+0

我知道它難以正確解釋 - 你創建一個JSON對象來保存索引的值 – Katana24 2014-09-24 11:57:38

+0

你是什麼意思? – Katana24 2014-09-24 14:45:57

回答

0

select電話removalModel.onSelected()。您不會將任何參數傳遞給onSelected,因此tabIndex將始終爲undefined

您需要類似removalModel.onSelected(index)

我不知道你爲什麼使用$scope.$eval