0

md-option 안에 md-option이 있습니다. md-option 태그에서 정의 된 내 함수를 가리키는 클릭이 있습니다. 문제는 목록에서 옵션을 클릭 할 때 내 기능에 도달하지 않는 것 같습니다.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(); 
       }; 

그것은 콘솔 아무것도 기록하지 않습니다, 그게 내 기능에 도달하지 의미합니다. 아무도 왜 그런 생각을 갖고 있니?

미리 감사드립니다. 당신이 범위에 추가 할 범위에 changeInterval 방법을 사용하여 원하는대로 컨트롤러

또는

사용

+0

'changeInterval'은 private 함수라고 생각합니다. 이것을 시도해보십시오'$ 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

다음과 같이

컨트롤러 내 :

$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; 
관련 문제