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;