2017-03-12 4 views
1

내가하려는 것은 ng-click을 사용하여 ng-repeat의 현재 객체를 컨트롤러 기능에 전달하는 것입니다.서비스를 통해 클릭하여 다른 컨트롤러에 전달

<div ng-controller="ScheduleCtrl as vm" >    
<div ng-repeat="item in vm.items"> 
<div ng-click="vm.select(item)"> 

첫 번째 컨트롤러는 서비스에 따라 등록되며 위에서 언급 한 방법으로 다음과 같이 정의됩니다.

var app = angular.module('ascensionApp'); 
app.controller("ScheduleCtrl", ["$scope", 'ScheduleService', 

function(ScheduleService) { 
    var vm = this; 
vm.select = function(scheduleItem){ 
      ScheduleService.save(scheduleItem); 
     }; 
}]); 

서비스는 모듈에 등록되며, 저장 메소드를 사용하여 들어오는 객체를 범위로 허용하고 객체를 반환하는 메소드로 다음과 같이 정의됩니다.

app.service('ScheduleService', function() { 

var scheduleItem = {}; 


this.save = function(scheduleItem){ 
    scheduleItem.pop(); 
    scheduleItem.push(scheduleItem); 
}; 

this.show = function(){ 
    return scheduleItem; 
}; 
}); 

별도의 요소에 대한 컨트롤러가 데이터 액세스를 시도합니다.

<div id="dashboard" ng-controller="DashboardCtrl"> 
<h1 class="mdl-card__title-text" id="headline"> 
         It's time for {{data.name}} 
</h1> 

내가 각도에 새로운 해요,하지만 하루 종일 사용자 정의 서비스를 사용하여 연구 한 다음과 같은

app.controller("DashboardCtrl", ["$scope", 'ScheduleService', function($scope, ScheduleService) { 
    $scope.data = ScheduleService.show(); 
}]); 

는 그 다음 뷰에 표시됩니다.

ScheduleService.save 나는 서비스 방식을 만드는 많은 변화를 시도했지만 하나가 어떤 성공 또는 위의 오류가 발생하지 않는 기능

되지 않습니다 : 지금은 그 오류를 얻고있다. 누군가 내가 뭘 잘못하고 있는지 설명해 주시겠습니까?

정말 고마워요!

답변

0

컨트롤러의 오류 중 ScheduleService은 (는) 정의되지 않았습니다.

당신이 컨트롤러를 선언하고, 컨트롤러 기능은 그 같은 같은 같은 순서로 함수 인수로 나열 종속성이 있어야 주입 사물의 이름을 지정

:

app.controller("ScheduleCtrl", ["$scope", 'ScheduleService', 

function($scope, ScheduleService) { 
+0

이봐, 해 주셔서 감사합니다 그 생각 나게! 약간의 조정이 끝나면 그 방법이 작동하기 시작했습니다. 나는 $ rootscope를 사용하여 첫 번째 컨트롤러의 메서드 내에서 내 두 번째 컨트롤러에 이벤트를 브로드 캐스팅하여 두 번째 컨트롤러 영역에서 업데이트되도록했습니다. –