Javascript 角度ng重复不';无法在子控制器中工作

Javascript 角度ng重复不';无法在子控制器中工作,javascript,angularjs,Javascript,Angularjs,我正在做一个角度页面,如下图所示,datatable部分属于ng视图(使用ngRoute),上面的导航栏属于index.html,它是父级。在子视图中,底部还有一个导航栏。现在我想把这两个导航栏放在一起(将子导航栏移到ng视图之外)。我尝试将子导航栏放入index.html,然后ng controller='childController',它没有显示任何内容 ======= 如果我在数组中生成一些固定数据,则可以显示它。但是在子控制器中动态生成的数据不起作用 这是我的部分代码 我将子导航栏放

我正在做一个角度页面,如下图所示,datatable部分属于ng视图(使用ngRoute),上面的导航栏属于index.html,它是父级。在子视图中,底部还有一个导航栏。现在我想把这两个导航栏放在一起(将子导航栏移到ng视图之外)。我尝试将子导航栏放入index.html,然后ng controller='childController',它没有显示任何内容

=======

如果我在数组中生成一些固定数据,则可以显示它。但是在子控制器中动态生成的数据不起作用

这是我的部分代码

我将子导航栏放在index.html中,然后添加子控制器:

  <ul ng-controller="imagesController" >
     <li ng-repeat="y in subNav">{{y.name}}</li>
  </ul>

  <div><ng-view></ng-view></div>

默认情况下,您无法访问父级的作用域。您需要执行以下操作才能访问父作用域的subNav变量:

$scope.$parent.subNav.splice(index+1);
否则,您将在子控制器作用域中创建一个新变量
subNav


您可以阅读更多信息。

默认情况下,您无法访问父级的作用域。您需要执行以下操作才能访问父作用域的subNav变量:

$scope.$parent.subNav.splice(index+1);
否则,您将在子控制器作用域中创建一个新变量
subNav


您可以阅读更多信息。

我不建议使用$scope.$parent。相反,我将创建一个服务。您可以在文档中了解它们

基本原理如下所示:

父控制器-->服务-->子控制器

ParentController将ChildController可能需要了解的任何信息保存到服务中。ChildController不再需要了解ParentController。ChildController所关心的是从服务中获取数据,以便它能够完成自己的工作


使用angularjs的一个重要原因是实现关注点的分离。通过使用$scope.$parent,您可以创建两个紧密耦合的控制器。通过在两个控制器之间设置服务,两个控制器都不必相互了解。应该提供这种方法来提高代码的可维护性和重用性

我不建议使用$scope.$parent。相反,我将创建一个服务。您可以在文档中了解它们

基本原理如下所示:

父控制器-->服务-->子控制器

ParentController将ChildController可能需要了解的任何信息保存到服务中。ChildController不再需要了解ParentController。ChildController所关心的是从服务中获取数据,以便它能够完成自己的工作


使用angularjs的一个重要原因是实现关注点的分离。通过使用$scope.$parent,您可以创建两个紧密耦合的控制器。通过在两个控制器之间设置服务,两个控制器都不必相互了解。应该提供这种方法来提高代码的可维护性和重用性

使用$scope.$apply,如下所示

 $scope.getCurrentNav = function(index) {
                $http({
                    method: 'GET',
                    url: $scope.subNav[index].suburl + '/' + $scope.subNav[index].name
                }).then(function(response) {
  $scope.$apply(function () {
                    $scope.subNav.splice(index+1);

                    $scope.applicationimages = response.data.payload.list;
                    $scope.url = $scope.subNav[index].suburl + '/' + $scope.subNav[index].name;
})
                }, function(response) {
                    console.log('http error');
                })  
        }

使用$scope.$apply,如下所示

 $scope.getCurrentNav = function(index) {
                $http({
                    method: 'GET',
                    url: $scope.subNav[index].suburl + '/' + $scope.subNav[index].name
                }).then(function(response) {
  $scope.$apply(function () {
                    $scope.subNav.splice(index+1);

                    $scope.applicationimages = response.data.payload.list;
                    $scope.url = $scope.subNav[index].suburl + '/' + $scope.subNav[index].name;
})
                }, function(response) {
                    console.log('http error');
                })  
        }

谢谢你的建议,我稍后会尝试服务,但这里我需要尽快完成。谢谢你的建议,我稍后会尝试服务,但这里我需要尽快完成