我想将属性film.title传递给状态模板,而不必在状态URL中指定它。

index.html:

<a ui-sref="showtimes({ filmId: film.uid, filmTitle: film.title })">

app.js:

    .state('showtimes', {
        url: '/showtimes/:filmId',
        controller: function($scope, $http, $stateParams) {
            $http.get('api/showtimes/?film_id=' + $stateParams.filmId).success(function(data) {
                $scope.showtimes = data;
            });
        },
        templateUrl: 'static/showtimes.html'
    });


showtimes.html:

<p>{{film}}</p>

我尝试将$scope.film = $stateParams.filmTitle;添加到控制器。没用我也尝试了$scope.film = $state.params.filmTitle;却没有任何运气。

最佳答案

您可以使用params属性指定非URL参数:

.state('showtimes', {
  url: '/showtimes/:filmId',
  params: {
    filmTitle: undefined // or "default Title"
  },
  controller: function($scope, $http, $stateParams) {
    console.log($stateParams.filmTitle);
    // ...
  },
  // ...
});

09-18 00:24