var app = angular.module("myApp", ['ngRoute', 'ngSanitize']);
app.controller('landingPageController', function($scope) {
$scope.countries = [{
name: "India",
Id: "1"
}, {
name: "Nepal",
Id: '2'
}];
});
У меня одинаковые критерии фильтрации на двух diff. страниц в угловом, поэтому я использовал один контроллер с двумя маршрутами и двумя разностями. html для части фильтра. Мне нужно, если я выберу любую страну на домашней странице, тот же выбор должен быть отражен на странице about (вместо того, чтобы снова выбрать ту же страну). Я имею в виду, что это должен быть общий фильтр на 2 страницах, не являющийся индивидуальным.
Вот URL: http://plnkr.co/edit/VMYYBDy4doWCzUa4d6Uq?p=preview
нужна помощь в сортировке...
Вы можете обмениваться данными между разными контроллерами (или разными экземплярами одного и того же контроллера), используя, например, services
. Так что в вашем scotchApp
(звучит вкусно, BTW!) У вас может быть что-то вроде
scotchApp.service('countryService', function() {
var current;
return {
// set selected country
set: function(country) {
current = country;
console.log('set', current);
},
// get selected country
get: function() {
console.log('get', current);
return current;
}
};
});
И ваш mainController
как
scotchApp.controller('mainController', function($scope, countryService) {
$scope.countries = [{
name: 'India',
id: 1 // note the property casing here
},{
name: 'Nepal',
id: 2
}];
// get selected country
$scope.selectedCountry = countryService.get();
// set selected country
$scope.set = function(country) {
countryService.set(country);
};
});
И template
для ваших маршрутов
<div>
<select ng-options="country.name for country in countries track by country.id"
ng-model="selectedCountry"
ng-change="set(selectedCountry)">
<option value="">Select country</option>
</select>
</div>
Это должно сделать это.
$scope.selectedCountry = countryService.get() || $scope.countries[0];