source

어떤 컨트롤러에서 다른 피어 컨트롤러로 일부 데이터를 전달하려면 어떻게 해야 합니까?

manycodes 2023. 3. 7. 21:38
반응형

어떤 컨트롤러에서 다른 피어 컨트롤러로 일부 데이터를 전달하려면 어떻게 해야 합니까?

다음의 2개의 피어 컨트롤러가 있습니다.여기에는 부모가 없습니다.

<div data-ng-controller="Controller1">

</div>

<div data-ng-controller="Controller2">
   The value of xxx is: {{ xxx }}
</div>

angular.module('test')
   .controller('QuestionsStatusController1',
    ['$rootScope', '$scope'
    function ($rootScope, $scope) {
    // How can I set the value of xxx in the HTML that's part of Controller2    
    }]);

angular.module('test')
   .controller('QuestionsStatusController2',
    ['$rootScope', '$scope',
    function ($rootScope, $scope) {
    }]);

Controller 1에서 Controller 2에 의해 제어되는 HTML 변수 xxx의 값을 갱신하고 싶습니다.제가 할 수 있는 방법이 있을까요?

이를 위해 서비스를 사용합니다.

MyApp.app.service("xxxSvc", function () {

var _xxx = {};

return {
    getXxx: function () {
        return _xxx;
    },
    setXxx: function (value) {
        _xxx = value;
    }
};

});

다음으로 이 서비스를 양쪽 컨트롤러에 주입합니다.

Controller1에서는 서비스에 대한 호출과 함께 공유 xxx 값을 설정해야 합니다.xxxSvc.setXxx(xxx)

마지막으로 Controller2에서 다음과 같이 이 서비스의 getXx() 함수에 $watch를 추가합니다.

  $scope.$watch(function () { return xxxSvc.getXxx(); }, function (newValue, oldValue) {
        if (newValue != null) {
            //update Controller2's xxx value
            $scope.xxx= newValue;
        }
    }, true);

컨트롤러 간에 데이터를 공유하기 위해 서비스를 반드시 사용하세요.다음의 예를 제시하겠습니다.$180은 방법이 아닙니다. 더 적절한 방법이 있을 때 이벤트 시스템을 사용하지 마십시오.글로벌 상수의 경우 '서비스', '값' 또는 '상수'를 사용합니다.

http://plnkr.co/edit/ETWU7d0O8Kaz6qpFP5Hp

다음은 페이지에서 데이터 미러를 볼 수 있도록 입력 예를 보여드리겠습니다.http://plnkr.co/edit/DbBp60AgfbmGpgvwtnpU

var testModule = angular.module('testmodule', []);

testModule
   .controller('QuestionsStatusController1',
    ['$rootScope', '$scope', 'myservice',
    function ($rootScope, $scope, myservice) {
       $scope.myservice = myservice;   
    }]);

testModule
   .controller('QuestionsStatusController2',
    ['$rootScope', '$scope', 'myservice',
    function ($rootScope, $scope, myservice) {
      $scope.myservice = myservice;
    }]);

testModule
    .service('myservice', function() {
      this.xxx = "yyy";
    });

1개의 컨트롤러로 다음 작업을 수행할 수 있습니다.

$rootScope.$broadcast('eventName', data);

다른 곳에서 이벤트를 듣습니다.

$scope.$on('eventName', function (event, data) {...});

를 사용해야 합니다.

 $rootScope.$broadcast()

컨트롤러에서 데이터를 전송해야 합니다.그리고 그 데이터들을 수신한 쪽에서는

 $scope.$on

여기 얼마 전에 포크를 한 바이올린이 있다(누가 먼저 했는지 모르겠다).

http://jsfiddle.net/patxy/RAVFM/

언급URL : https://stackoverflow.com/questions/18856153/how-can-i-pass-some-data-from-one-controller-to-another-peer-controller

반응형