Предполагая, что я правильно понял ...
Это теоретически возможно иметь обе страницы управляемых одним контроллером, но это не лучшая практика, если они 2 отдельные виды, и в любом случае, контроллеры считаются недолговечными. «Угловой способ» передачи данных между контроллерами - это услуги. Таким образом, вы могли бы сделать что-то вроде этого:
app.factory('DownloadType',function() {
return {
type:"free"
};
// just used "free" as a default
})
.controller('Home',function($scope,DownloadType) {
$scope.setType = function(type) {
DownloadType.type = type;
};
})
.controller('Download',function($scope,DownloadType) {
$scope.type = DownloadType.type;
})
;
И тогда ваш дома шаблона может выглядеть следующим образом:
<button ng-click="setType('free')">Free</button>
<button ng-click="setType('paid')">Paid</button>
И ваш шаблон скачать
<div ng-show="type === 'free'">This is a free download</div>
<div ng-show="type === 'paid'">You are paying us! We love you!</div>
Есть несколько чистых способы, например, если вы хотите один щелчок, чтобы перейти на страницу и установить его:
.controller('Home',function($scope,$location,DownloadType) {
$scope.setType = function(type) {
DownloadType.type = type;
$location.path('/download');
};
})
Наконец, если вы хотите их на одном экране, то вам не нужна услуга вообще, потому что у вас есть один вид с одним контроллером.
Что если я хочу сделать это с помощью одного контроллера? Я довольно новичок в AngularJS. Как я могу передать значение DownloadType между представлениями с одним и тем же контроллером? Каждый раз, когда я перехожу к просмотру загрузки, главный контроллер сбрасывает ... – Tsury
Вы могли бы, но почему бы вам? Поймите, что это означает, что * все * в сфере охвата будет разделяться между взглядами, и все может случиться. Однако, если вы хотите, и согласитесь, что это единственный вид, то вы можете. – deitch