AngularJS遇到UI-Router问题,并将id从一个控制器链接到另一个控制器

时间:2016-02-28 15:58:19

标签: angularjs angular-ui-router

我最初使用ng-route设置了我的应用程序,现在我正在切换到ui-route。我曾经使用"当(' / json / galleries /:projectId')"单击缩略图时生成图库。现在用"州"我似乎无法将我的projectId传递到图库状态以生成我的图库。

应用模块

(function() {
  'use strict';

  var bhamDesignsApp = angular.module('bhamDesignsApp', ['ngAnimate', 'ngTouch', 'ngSanitize', 'ngMessages', 'ngAria', 'ui.router', 'mm.foundation', 'appControllers']);

    bhamDesignsApp.config(function($stateProvider, $urlRouterProvider) {

        $urlRouterProvider.otherwise('/home');

        $stateProvider

        .state('home', {
            url: '/home',
            templateUrl: 'partials/home.html',
            controller: 'ProjectsController'
          })

        .state('gallery', {
          url: '/gallery/:projectId',
          templateUrl: 'partials/gallery.html',
          controller: 'GalleryController'
        });
      });
})();

App Controller

(function() {

'use strict';

var appControllers = angular.module('appControllers', []);

appControllers.controller('ProjectsController', ['$scope', '$http',
  function ($scope, $http) {
  $http.get('app/json/projects.json').success(function(data){
    $scope.projects = data;
  });

  $scope.orderProp = '-year';

}]);

appControllers.controller('GalleryController', ['$scope', '$stateParams', '$http',
  function($scope, $stateParams, $http) {
    $http.get('app/json/galleries/' + $stateParams.projectId + '.json').success(function(data) {
      $scope.gallery = data;
    });
}]);

})();

HTML

.row
  .small-12.medium-3.columns(ng-repeat="project in projects | orderBy:orderProp | filter:categoryFilter")
    .tmbnail-container    
      a(ui-sref="gallery")
        img.tmbnail(ng-src="{{project.thumbnail}}")
        .text 
          h5 {{project.title}}
          h6 {{project.year}}
  .small-12.medium-6.columns

1 个答案:

答案 0 :(得分:1)

a(ui-sref="gallery")

您不会将任何身份证件传递给州。

将其更改为

a(ui-sref="gallery({projectId: project.id})"

(假设项目有id字段,其中包含其ID)

说明如何使用ui-sref的文档:http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.directive:ui-sref