我有一个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}}
,但它不起作用。我如何在我的控制器中定义它?
答案 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];