splincodewd
@splincodewd
Developer

Как в angularJS передавать данные из одного контроллера в другой?

Я что-то так и не разобрался, можете подсказать на примере:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
	<script>
		var myModule = angular.module('myModule', []);
		myModule.service('dataService', function($rootScope) {
		  return {
		  	dataZeroController: {base: 1},  
		  	dataOneController: {text: 'text'},  
		  };
		});

		myModule.controller('ControllerZero', ['$scope', 'dataService', function($scope, dataService) { 

			$scope.base = dataService.dataZeroController.base;

			$scope.handleClick = function(value) {
				dataService.dataOneController.text = value; // как отдать значение в другой контроллер, где {{ title }}
				alert(value); 
			}
		}]);

		myModule.controller('ControllerOne', ['$scope', 'dataService',  function($scope, dataService) { 
			$scope.title = dataService.dataOneController.text;

		}]);

	</script>
</head>
<body ng-app="myModule">
	
	<div class="box1" ng-controller="ControllerZero">
		<span ng-model="base">{{ base }} </span>
		<button ng-click="handleClick(base)">передать значение base </button>
	</div>
	

	<div class="box2" ng-controller="ControllerOne">
		
		{{ title }}

	</div>

</body>
</html>


Как из одного контроллера изменить значение другого? Например, при клике на кнопку

То есть я кликнул по кнопке и вместо `text` я увижу `единицу`
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 1
splincodewd
@splincodewd Автор вопроса
Developer
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
	<script>
		var myModule = angular.module('myModule', []);
		myModule.service('dataService', function($rootScope) {
		  return {
	          base: 1,
	          title: 'text',
	        };
		});

		myModule.controller('ControllerZero', ['$scope', 'dataService', function($scope, dataService) { 
			$scope.ds = dataService;

			$scope.handleClick = function(value) {
				dataService.title = value;
			}

		}]);

		myModule.controller('ControllerOne', ['$scope', 'dataService',  function($scope, dataService) { 
			$scope.ds = dataService;
		}]);

	</script>
</head>
<body ng-app="myModule">
	
	<div class="box1" ng-controller="ControllerZero">
		<span ng-model="base">{{ ds.base }} </span>
		<button ng-click="handleClick(ds.base + 1)">передать значение base </button>
	</div>
	

	<div class="box2" ng-controller="ControllerOne">
		
		{{ ds.title }}

	</div>

</body>
</html>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы