2016-06-17 178 views
0

在我看來,我有一個ng-repeat,並且我想將對象從我的ng-repeat傳遞給javascript函數,但是當我嘗試在控制檯上顯示它時,它會給我undefined將html值傳遞給javascript函數

這裏是我的html:

<!-- Panel --> 
<div class="row"> 
    <div class="col-lg-12"> 
    <div class="panel panel-primary"> 
     <div class="panel-heading"> 
     {{card}} 
     </div> 
     <!-- /.panel-heading --> 
     <div class="panel-body"> 


     <div id="nvd3-container" class="md-card" style="overflow-x: auto" ng-if="dataloaded0"> 

      <md-card-content id="nvd3-scrollable-content" style="width: {{width}}px; height: 350px;"> 
      <md-tabs md-dynamic-height="" md-border-bottom=""> 
       <md-tab ng-repeat="pu in selectedKpi" label="{{pu.dprdProuNr}}"> 

       <md-content class="md-padding"> 
        <div class="row"> 
        <div class="col-md-6"> 
         {{pu.item1}} 
         {{pu.item2}} 
        </div> 
        </div> 
       </md-content> 
       </md-tab> 
      </md-tabs> 
      </md-card-content> 
     </div> 
     </div> 
     <!-- /.panel-body --> 
     <a href="" ng-click="footerLinkClicked(pu)"> 
     <div class="panel-footer"> 
      <span class="pull-left">Trend</span> 
      <span 
             class="pull-right"> 
      <i class="fa fa-arrow-circle-right"></i> 
      </span> 
      <div class="clearfix"></div> 
     </div> 
     </a> 
    </div> 
    </div> 
</div> 

<!-- /.panel --> 

這裏是返回undefined我的js文件:

angular.module('App') 
    .directive('KpiParameter', function() { 
     return { 
      restrict: 'E', 
      templateUrl: 'app/kpi/kpi-parameter/kpi-parameter.html', 

      scope: { 
       card: '=', 
       kpiParamCallback: '&', 
       selectedProductionUnit: '<' 

      }, 

      controller: function($scope, $rootScope, KpiChartFactory, $filter) { 


       console.log("!???????"); 
       console.log($scope.selectedProductionUnit); 


       $scope.$watch('selectedProductionUnit', function() { 
        console.log($scope.selectedProductionUnit); 
        console.log("Changed"); 
        KpiParamUpdated(); 
        $scope.kpiParamCallback({ 
         selectedProductionUnit: $scope.productionUnitDefault 
        }); 

       }, true); 


       function KpiParamUpdated() { 
        console.log("KPiParamUpdated"); 
        console.log($scope.selectedProductionUnit); 
        $scope.dataloaded0 = true; 


        KpiChartFactory.get({ pu: $scope.selectedProductionUnit }, function(data) { 
         $scope.selectedKpi = data; 
         console.log($scope.selectedKpi); 


         $rootScope.$broadcast('kpiParams', $scope.selectedKpi); 
        }); 

       } 


       $scope.footerLinkClicked = function(pu) { 

        console.log("parameters received :"); 
        console.log(pu); 


       } 


      }, 
      controllerAs: "KpiPCtrl" 
     }; 
    }); 

你有任何想法,爲什麼?我需要在我的js文件中定義它?

+2

咦?該函數調用是該ng-repeat的_outside_。你期望什麼? –

+0

好的,但然後我的HTML不會看起來相同,如果我關閉後的 – blaa

+0

耶,然後你可以找出這個問題(如何解決它的方式,使_your_應用程序有意義) –

回答

0

正如AngularMaterial的docs發現,你只能實現你想要使用md-on-select

做什麼屬性

參數類型說明

  • 標籤串 可選屬性如果存在和表達式評估爲truthy,殘障人士標籤選擇指定一個簡單的字符串作爲選項卡標籤
  • NG-禁用布爾值。
  • 取消選擇md的方式表達式取消選項卡後要評估的表達式。
  • md-on-select expression選擇標籤後要評估的表達式。
  • md-active布爾值如果爲true,則設置活動選項卡。注意:一次只能有一個活動選項卡。

注:如果標籤已被選中,然後點擊在這場活動中略有不同NG單擊,在那,該事件將不會觸發。

0

您撥打footerLinkClicked()無法知道要使用哪個pu,除非您告訴它要使用哪一個。由於它不在你的ng-repeat之內,所以沒有太簡單的方法來做到這一點。

md-tabs有一個名爲md-selected的屬性,允許您將當前選定的索引存儲在變量中。所以假設selectedKpi是一個數組(或陣列等),你可以這樣做:

<md-tabs md-dynamic-height="" md-border-bottom="" md-selected="selectedTab"> 

這:

<a href="" ng-click="footerLinkClicked(selectedKpi[selectedTab])"> 

,你應該準備就緒。