Общий фильтр для двух разных маршрутов

0
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

нужна помощь в сортировке...

Теги:

1 ответ

1
Лучший ответ

Вы можете обмениваться данными между разными контроллерами (или разными экземплярами одного и того же контроллера), используя, например, 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>

Это должно сделать это.

  • 0
    Как я могу сделать страну по умолчанию "Индией" в этом случае?
  • 0
    $scope.selectedCountry = countryService.get() || $scope.countries[0];

Ещё вопросы

Сообщество Overcoder
Наверх
Меню