Javascript 控制器中的AngularJS更改不会反映在视图中
我有一个控制器,它有一个连接到$scope的原型实例,当用户打开页面时,它有一些初始值。如果用户单击该选项卡,将调用一个服务,该服务从外部服务提取数据,扩展原型并替换同一控制器的$scope中的实例。同一控制器用于所有子选项卡。但是,$scope中的更改不会反映在视图中,但只有当用户再次单击选项卡时,他才能看到以前提供的更改 控制器代码: 服务代码: 国家:Javascript 控制器中的AngularJS更改不会反映在视图中,javascript,angularjs,Javascript,Angularjs,我有一个控制器,它有一个连接到$scope的原型实例,当用户打开页面时,它有一些初始值。如果用户单击该选项卡,将调用一个服务,该服务从外部服务提取数据,扩展原型并替换同一控制器的$scope中的实例。同一控制器用于所有子选项卡。但是,$scope中的更改不会反映在视图中,但只有当用户再次单击选项卡时,他才能看到以前提供的更改 控制器代码: 服务代码: 国家: .state('analyses-details', { abstract: true, url: '/analyse
.state('analyses-details', {
abstract: true,
url: '/analyses',
params: {
analysis: null
},
templateUrl: 'views/analyses/analyses.details.html',
controller: 'AnalysisDetailsController'
})
.state('analyses-details.table', {
url: '/table',
parent: 'analyses-details',
templateUrl: 'views/analyses/analyses.details.table.html'
})
我发现了几篇类似的文章,其中$scope.$apply()或$timeout被提议作为解决方案,但对我来说并不适用
编辑:
我用这种方式解决了这个问题,我将导航更改为另一个选项卡,所以我将数据作为参数发送,以便在控制器中再次初始化
$state.go('analyses-details.'+tabName,{
analysis: $scope.analysis
});
通常情况下,更新控制器作用域然后更改状态是没有意义的。似乎流程中出现了问题process@charlietfl我对页面上的所有选项卡使用相同的控制器。我更新了我的问题,以包括这些状态的外观。由于我在页面上有几个选项卡,并且只有一个范围变量在选项卡之间共享,所以我认为只有一个控制器并在用户打开新选项卡时更新此变量是很好的。请包括plunker。。。
.state('analyses-details', {
abstract: true,
url: '/analyses',
params: {
analysis: null
},
templateUrl: 'views/analyses/analyses.details.html',
controller: 'AnalysisDetailsController'
})
.state('analyses-details.table', {
url: '/table',
parent: 'analyses-details',
templateUrl: 'views/analyses/analyses.details.table.html'
})
$state.go('analyses-details.'+tabName,{
analysis: $scope.analysis
});