我的angularJS控制器中有一个函数,可通过下拉选项更改来调用该函数:
当前,将选择一个默认选项,并将从数据库中选择相应选项下的记录并将其设置为scope
变量。
这很好。现在,更改选项后,
$scope.optionChanged = function() {
$('#loading').show();
$('#recordForm').trigger("reset");
var data = {
'id': $scope.data.id,
};
$rootScope.idChange = data.catId;
if($scope.id !== undefined){
$http({
'url': '/pendingCount',
'method': 'POST',
'headers': {
'Content-Type': 'application/json'
},
'params': data
})
.then(
function(
response) {
$scope.pendingCount = response.data.pendingCount;
if (($scope.pendingCount !== 0) && ($scope.pendingCount !== null) && ($scope.pendingCount !== undefined)) {
$http({
'url': '/customerRecord',
'method': 'POST',
'headers': {
'Content-Type': 'application/json'
},
'params': data
})
.then(
function(
response) {
$('#loading').hide();
$scope.record = response.data;
console.log($scope.record);
})
});
} else {
$("#noActive").show()
}
}
检查$scope.record
是否正在控制台中打印所需的结果。但是scope变量没有反映在UI中。
甚至尝试了$scope.$apply
以及this答案中提供的建议。但没有运气。
有人可以帮忙吗?
答案 0 :(得分:1)
实际上,我在html页面中的2个不同位置使用了ng-controller两次。我知道这是一个问题。但是不知道它以什么方式以及如何影响。有想法吗?
<div ng-controller="myCtrl">
<select ng-model="data.id" ng-change="optionChanged()">
</select>
</div>
<div ng-controller="myCtrl">
{{record}}
</div>
在上述情况下,将创建两个具有不同范围的控制器。在控制器的第一个实例中对范围变量所做的更改将不会在第二个实例的范围中看到。
有关更多信息,请参见AngularJS Developer Guide - Scope Hierarchies