AngularJS ng-click 似乎不起作用

AngularJS ng-click seems to not work

我有一个 md-select,里面有一个 md-option。在 md-option 标签中,我有一个 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();
                };

它不会向控制台写入任何内容,这意味着它永远不会达到我的功能。有人知道为什么吗?

提前致谢!

在你的控制器中写入"$scope.changeInterval=changeInterval;"

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

因为你想在作用域上使用 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 函数已分配给作用域上的变量,因此可以在视图上调用它。

由于您的 changeInterval() 是控制器的私有函数,因此您无法访问它。你需要使它成为public(将它绑定到控制器的一个变量)。

你应该采用这种方法:

$scope.changeInterval = changeIntervalapproach;

如果您将视图模型方法与 controllerAs 结合使用,请使用:

vm.changeInterval = changeInterval;

如果您提供创建控制器的代码会更好。 但是,我认为您应该以这种方式创建方法 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();    
          }
});

希望对您有所帮助!