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