使用子页

时间:2016-01-29 10:01:21

标签: angularjs

我有一个Angular页面,其中ng-repeat通过项目列表(json)。

ng-repeat="project in projects"

它的结构如下:

[{"number":789456,"title":"Coolest project ever","manager":"Darth Vader","image":7,"startdate":"25.1.2013","enddate":"8.7.2015","location":"Deathstar","favorited":"not"}]

所以,我已经让每个ng-repeat都有以下内容:

<a ng-href="#/projects/{{project.number}}"></a>

我已按以下方式设置路线:

 .when('/projects', {
        templateUrl: '/views/projects.html',
        controller: 'ProjectController',
        controllerAs: 'pr',
        title: 'Prosjekter'
    })

    .when('/projects/:projectNumber', {
        templateUrl: '/views/projectdetails.html',
        controller: 'ProjectController',
        controllerAs: 'pr',
        title: 'Prosjekt'
    })

我的控制器看起来像这样:

var app = angular.module('app');

app.controller('ProjectController', function($scope, projectList, $mdDialog, $q, $timeout, $routeParams){

  $scope.projectNumber = $routeParams.projectNumber;
  $scope.projects = projectList.query();


  $scope.project = $scope.projects.filter(function(project) {
        return project.number === $routeParams.projectNumber;
    })[0];

我从我的工厂获得名为“projectList”的项目清单。

我的问题是,视图正确加载,但是当我进入项目的“子视图”时,我无法访问项目的变量。

我尝试使用{{project.number}},但它不起作用。我如何在我的控制器中定义它?

2 个答案:

答案 0 :(得分:1)

ProjectController,中,您需要使用$routeParams来引用网址中定义的projectNumber

在您定义{{project.number}}之前,

$scope.project无法使用。当您需要参考从网址获取的项目编号时,请使用$routeParams.projectNumber

例如,您有:

app.controller('ProjectController', ['$scope', '$routeParams', function ($scope, $routeParams) {
    var projects = [{...}, ...];
    $scope.project = projects.filter(function(project) {
        return project.number === $routeParams.projectNumber;
    })[0];
}]);

答案 1 :(得分:0)

你能检查一下$ routeParams.projectNumber的类型吗?是字符串还是数字?

在控制器中尝试此操作

$scope.project = $scope.projects.filter(function(project) {
    return project.number == $routeParams.projectNumber;
})[0];