Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 带子页面的角度布线_Angularjs - Fatal编程技术网

Angularjs 带子页面的角度布线

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');

我有一个有角度的页面,其中我通过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');

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是一个数字。