Angularjs 带子页面的角度布线
我有一个有角度的页面,其中我通过projectlist(json)重复Angularjs 带子页面的角度布线,angularjs,Angularjs,我有一个有角度的页面,其中我通过projectlist(json)重复ng 它的结构如下: [{"number":789456,"title":"Coolest project ever","manager":"Darth Vader","image":7,"startdate":"25.1.2013","enddate":"8.7.2015","location":"Deathstar","favorited":"not"}] var app = angular.module('app');
ng
它的结构如下:
[{"number":789456,"title":"Coolest project ever","manager":"Darth Vader","image":7,"startdate":"25.1.2013","enddate":"8.7.2015","location":"Deathstar","favorited":"not"}]
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];
因此,我让每个ng repeat
都有以下内容:
<a ng-href="#/projects/{{project.number}}"></a>
我的控制器如下所示:
[{"number":789456,"title":"Coolest project ever","manager":"Darth Vader","image":7,"startdate":"25.1.2013","enddate":"8.7.2015","location":"Deathstar","favorited":"not"}]
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];
我从工厂得到名为“项目列表”的项目列表
我的问题是,视图加载正确,但是一旦我在这个项目的“子视图”中,我就无法访问项目的变量
我尝试使用
{{project.number}}
,但不起作用。我如何在我的控制器中定义它?在您的项目控制器中,
您需要使用$routeParams
来引用url中定义的项目编号
{{project.number}
在定义$scope.project
之前将不可用。当您需要参考从url获取的项目编号时,请使用$routeParams.projectNumber
例如,您将拥有:
app.controller('ProjectController', ['$scope', '$routeParams', function ($scope, $routeParams) {
var projects = [{...}, ...];
$scope.project = projects.filter(function(project) {
return project.number === $routeParams.projectNumber;
})[0];
}]);
你能检查一下$routeParams.projectNumber的类型吗。是字符串还是数字
在控制器中尝试此操作
$scope.project = $scope.projects.filter(function(project) {
return project.number == $routeParams.projectNumber;
})[0];
哦,是的,在定义$scope.project
之前不要使用{{project.number}
。要引用项目编号,请使用$routeParams.projectNumber
。这是否也返回未定义的
?它仍然不工作。我也在帖子中添加了管制员代码。您是否加载了ng路线
?它不是主angular.js
的一部分。是的,如果我不这样做,我的路由将根本无法工作。我的问题是访问子视图中的变量。我的控制器中已经有了这些代码,参考ccjmne的答案。但它仍然不起作用。。。我看过不同的教程,但我实在搞不懂视图如何知道我点击了哪个项目,并让我访问该项目的信息。比如,如果我点击项目号222103,并被重新路由到#/projects/222103,那么当我请求{{project.manager}时,控制器怎么知道我只想查看项目222103?我一直在看不同的教程,我试着用同样的方法来做,但我无法让它工作。在你的代码中有project.number===$routeParams.projectNumber
。我的建议是将其更改为project.number==$routeParams.projectNumber
。使用=
而不是=
,因此将对变量执行类型转换。我认为$routeParams.projectNumber是一个字符串,而project.number是一个数字。