两种不同路线的通用过滤器

时间:2015-06-28 18:12:08

标签: javascript angularjs

var app = angular.module("myApp", ['ngRoute', 'ngSanitize']);

app.controller('landingPageController', function($scope) {
  $scope.countries = [{
    name: "India",
    Id: "1"
  }, {
    name: "Nepal",
    Id: '2'
  }];
});

我在两个差异上有相同的过滤条件。有角度的页面,所以我使用了2个路由的单个控制器和两个差异。过滤器部分的HTML。我需要如果我在主页上选择任何国家/地区,相同的选择应该反映到关于页面(而不是再次选择相同的国家/地区)。我的意思是它应该是跨越2页而不是个人的常见过滤器。

这是网址:http://plnkr.co/edit/VMYYBDy4doWCzUa4d6Uq?p=preview

需要帮助来解决它...

1 个答案:

答案 0 :(得分:1)

您可以使用以下方法在不同控制器(或同一控制器的不同实例)之间共享数据。 services。所以在你的scotchApp(听起来很好吃,顺便说一下!)你可能会有像

这样的东西
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>

应该这样做。