2014-12-06 2 views
1

저는 AngularJS와 Kendo Grid를 함께 사용하고 있습니다. HTML (표시 할보기 포함), 컨트롤러 (보기와 모델 간 좌표), 서비스 (비즈니스 논리)의 세 파일이 있습니다. 나는 Kendo Grid와 버튼을 가지고있다. Kendo Grid 열에있는 링크를 클릭하면 표시/숨기기를 원합니다. 아래는 코드 스 니펫입니다.검도 그리드 열의 링크에서 함수 호출

HTML

<div ng-app="myApp"> 

    <div ng-controller="myCtrl"> 

     <div id="grid" kendo-grid k-options="kendoGrid"></div> 

     <input type="button" id="myButton" ng-show="showButton"/> 

    </div> 

</div> 

서비스 :

var myApp = angular.module('myApp',[]); 
    myApp.service('myService', function() { 
    this.showMe = false; 
    this.changeShow = function(){ 
     this.showMe = !this.showMe; 
    }; 
     this.getKGrid = function() {     
       var kGrid = { 
        dataSource: [{"Col1":"Val1","Col2":"Val2"}], 
        columns: [{ 
         field: "Col1", 
         title: "Col1" 
        }, 
        { 
         field: "Col2", 
         title: "Col2", 
         template: "<a href='\\#' class='link' ng-click='this.changeShow()'>#=Col2#</a>" 
        }         
       ] 
      }; 
      return kGrid; 
     }; 
}); 

컨트롤러 : 나는 검도 그리드 및 칼럼에 대한 링크를 볼 수 있어요하지만 난 수 없습니다입니다

myApp.controller('myCtrl', function ($scope, myService) { 
    $scope.kendoGrid = myService.getKGrid(); 
    $scope.showButton = myService.showMe;  
    $scope.$watch(function(){return myService.showMe;}, function (newValue, oldValue) { 
     if (newValue == oldValue) return; 
     $scope.showButton = newValue; 
    }, true); 
}); 

컨트롤러를 통해이 열을 클릭하면 표시/숨기기 버튼. 여기에서 수정해야 할 부분을 도와주십시오. 또는이를 달성하기 위해 다른 방법을 따라야합니까?

미리 감사드립니다.

답변

1

템플릿의 this.changeShow()은 단지 문자열이며 서비스에서 정의한 실제 changeShow 함수에 연결된 것이 아닙니다.

ng-click 링크를 클릭하면 현재 $scope에 대한 this.changeShow() 표현식을 평가합니다.

당신은 그것을 확인하기 위해 컨트롤러에이를 넣을 수 있습니다 :

$scope.changeShow = function() { 
    console.log('changeShow'); 
}; 

데모 :http://plnkr.co/edit/cT6jsxbSRO9RRR6m1xgy?p=preview

당신이이 문제를 해결하기 위해 취할 수있는 여러 경로가 있습니다. 서비스에서 컨트롤러로 로직을 이동하는 것이 가장 쉽습니다.

+0

도움을 주셔서 감사합니다. 컨트롤러에서이 함수를 움직이면, 저에게 도움이되었습니다. 사실 저는 Controller를 통해 어떤 일을 할 수있는 방법을 찾아 내려고했기 때문에 컨트롤러에 어떤 논리도 나타나기를 원하지 않았습니다. 나는 링크 클릭으로 또 다른 문제에 직면하고있다. 해당 행의 세부 정보가 들어있는 행 열 클릭 팝업 창을 표시하고 싶습니다. http://demos.telerik.com/kendo-ui/grid/custom-command에서 주어진 것과 같은 것. 그러나이 기능은 각도 서비스의 새로운 맞춤 버튼이 아닌 기존 열의 링크를 클릭하면 작동합니다. 나를 안내 해줘. – pogo22

+0

도와 드리겠습니다. 그러나 답을 수락하여 해결 된 것으로 등록되고 다른 사람들이 새로운 문제에 대한 해결책을 제시 할 수 있도록 새로운 질문을하십시오. – tasseKATT