通过单击按钮到其他控制器传递参数

时间:2017-04-28 14:45:46

标签: javascript html angularjs parameters

我必须为大学课程做一个简单的CityBike申请。 为了完成这项任务,我给用户提供了在三个城市之间进行选择的可能性,并展示了目前所有的免费自行车和空城市自行车点。通过service.js,我包含了城市自行车的api。

我现在有两个视图(start.html& citybikes.html),我想在下拉菜单中选择三个城市之一,然后点击按钮将其传递给citybikes.html-controller。 有没有简单的方法来实现这个目标?

以下是start.html代码的主要部分:

a->p

这是控制器:

<label class="item item-input item-select">
  <div class="input-label">
    Stadt auswählen
  </div>


  <select ng-model="choose.name">
    <option ng-repeat= "city in citystart"> {{city.CityName}}</option>
  </select>
</label>

<p> anzeige? {{choose.name}}</p>


<!--BUTTON-->
<a ng-if="choose.name"
  class="button button-block button-positive"
  ui-sref="tab.citybike({param1: choose.name})">
  CityBikes anzeigen
</a>

最后是我的app.js的摘录,用于路由视图:

    angular.module('starter.controllers', [])
.controller('Start', function($scope, $stateParams, cities_overview) {
  //$scope.citystart = cities_overview.getCities();
})


.controller('CityBikeController', function($scope, $stateParams, CityBikeParis, CityBikeHamburg, CityBikeLondon, cities_overview, chosencities) {
  $scope.chosenVar = "";
  $scope.chosenVar = $stateParams.param1;
  $scope.SumFree=0;
  $scope.SumEmpty=0;

  var liste = CityBikeHamburg.getList();


  switch($scope.chosenVar){
      case "Paris":
        liste = CityBikeParis.getList();
      break;

      case "Hamburg":
        liste = CityBikeHamburg.getList();
      break;

      case "London":
        liste = CityBikeLondon.getList();
      break;
        }

    liste.then(function(list) {
        $scope.stationlist = list.data.network.stations;
        for(var i=0; i<$scope.stationlist.length; i++){
          $scope.SumFree   += $scope.stationlist[i].free_bikes;
          $scope.SumEmpty  += $scope.stationlist[i].empty_slots;
        }
    })

})

如果有人能帮助我,我将非常感激! :)

电贺, 托马斯

1 个答案:

答案 0 :(得分:0)

您可以在状态参数中传递参数。

路由:

  $stateProvider
  .state('tab.citybike', {
    url: '/citybike/:param1',
    views: {
      'tab-citybike': {
        templateUrl: 'templates/citybike.html',
        controller: 'CityBikeController'
      }
    },
    ...
  }

控制器:

var param = $stateParams.param1; //get param1 value.

Html:

ui-sref="tab.citybike({param1: choose.name})"