2014-08-29 2 views
0

AngularJS를 사용한 데이터 바인딩에 대해 설명하고 싶습니다. 배열을 사용하고 여러 컨트롤러와 공유하고 싶습니다.서비스와 컨트롤러 간의 AngularJS 데이터 바인딩

컨트롤러가 서비스중인 데이터를 수정할 때 다른 컨트롤러에서 변경 사항이 계정에 반영되었다고 가정합니다. html 템플릿이 자동으로 업데이트되었습니다.

불행하게도, 내가 아니라 내가 옵저버 패턴 또는 angular.copy이 사용하기 때문에 각도 방식으로, 약간의 성공 ...

나는 순수한 각도 방법을 시도

, 그것은 작동하지 않습니다. 여기

코드 예 : 공유

app.factory("MyService", [ 
function() { 

    myTableToShare = []; 

    return { 

     myTableToShared : myTableToShare, 
    }; 
} 
에 datas 포함

서비스

]);

서비스의 데이터를 수정하는 제어기

app.controller('AddCtrl', [ 
    '$scope', 'MyService', function ($scope, MyService) { 

     $scope.myService = MyService; 

     $scope.addElementToSharedTable = function(element) { 

      $scope.myService.myTableToShare.push(element); 

     }; 
    }]); 

템플릿에 테이블 요소 * 인쇄

app.controller('ReadCtrl', [ 
    '$scope', 'MyService', function ($scope, MyService) { 

     $scope.myService = MyService; 
    }]); 

** 템플릿을 표 datas를 인쇄 할 수 있도록 제어기 *

<div ng-controller="ReadCtrl"> 
    <ul > 
     <li ng-repeat="element in myService.myTableToShare"> 
      <span>{{element.id}} - {{element.name}}</span> 
     </li> 
    </ul> </div> 

differents HOWTO 덕분에이 방법을 적용했습니다. 불행히도이 HOWTO는 배열 객체가 아니라 String을 사용한다. 따라야 할 길입니까?

기다리는 중 나는 패턴 관찰자를 적용하고 컨트롤러에서 서비스로 이벤트를 알린다.하지만 나에게도 너무 장황하기 때문에 좋은 해결책이 아닌 것 같다.

Thaks

+0

'myTableToShared : myTableToShare' 유형을 확인하셨습니까? plunkr이나 jsfiddle을 설치해 주시겠습니까? – apairet

답변

0

사용 app.value (...) 컨트롤러가 동일한 모듈 '응용 프로그램'에있는 경우.

관련 문제