0

我有一個md-select,裏面有一個md選項。在md-option標籤中,我有一個ng-click指向我定義的函數。問題是,當我點擊列表中的一個選項時,它似乎永遠不會到達我的功能。AngularJS ng-click似乎不起作用

這裏是我的html:

<div class="panel-body"> 
      <md-select placeholder="{{getIntervalName()}}" ng-model="intervalSelected"> 
      <md-option ng-repeat="item in intervals" value="{{item.name}}" ng-click="changeInterval(item)"> 
       {{item.name}} 
      </md-option> 
      </md-select> 
      <div style="overflow: auto;"> 
       <div id="parentDivChart" style="{{changeWidth()}};height:400px"> 
        <canvas id="bar" class="chart chart-bar" chart-data="datta" 
         chart-labels="labels" chart-options="myoptions" chart-legend="legend"> 
        </canvas> 
       <div tc-chartjs-legend chart-legend="legend"></div> 
       </div> 
       </div> 
      </div> 

而且這是在控制器中定義我的功能:

function changeInterval(item) { 
        console.log("change intervaaaalll"); 
        $scope.default_interval ="day"; 
        intrvl = item.value; 
        setItem("interval", item.value); 
        $scope.loadChart(); 
       }; 

它不寫入到控制檯任何東西,這意味着它從來沒有達到我的功能。有人知道爲什麼嗎?

提前致謝!

+0

我認爲'changeInterval'是私人函數。試試這個'$ scope.changeInterval = function(){...}' –

回答

0

這本來是更好,如果你已經提供的代碼你在哪裏創建控制器。 不過,我認爲你應該以這種方式創建的方法changeInterval(item)

var nameOfYourApp = angular.module(‘nameOfYourApp’, []); 
nameOfYourApp.controller('nameOfYourController', function($scope) { 
      $scope.changeInterval = function(item) { 
        console.log("change intervaaaalll"); 
        $scope.default_interval ="day"; 
        intrvl = item.value; 
        setItem("interval", item.value); 
        $scope.loadChart();  
      } 
}); 

希望這有助於!

0

"$scope.changeInterval=changeInterval;"在控制器

使用"$scope.changeInterval=function (item) {...};"

0

當你要使用的changeInterval方法你必須將它添加到的範圍的範圍如下:

在控制器中:

$scope.changeInterval(item) { 
        console.log("change intervaaaalll"); 
        $scope.default_interval ="day"; 
        intrvl = item.value; 
        setItem("interval", item.value); 
        $scope.loadChart(); 
       }; 

不要忘記將$ scope作爲控制器的依賴項。

例如爲:

app.controller('myCtrl', function($scope) { 

}); 

現在作爲changeInterval功能被分配給上它可以在視圖上被調用的範圍的變量。

0

由於changeInterval()是控制器的私有函數,因此無法訪問它。您需要將其公開(將其綁定到控制器的變量)。

你應該用這種方法去:

$scope.changeInterval = changeIntervalapproach; 

如果您使用的是與controllerAs視圖模型的方法,然後使用:

vm.changeInterval = changeInterval;