我有以下代码:
// States with same templates and a param to know the difference
[...]
.state('concluded', {
url: '/concluded',
params: { type: 'concluded' },
parent: 'aggregators',
templateUrl: 'views/aggregators/index.html',
controller: 'AggregatorsCtrl'
})
.state('pending', {
url: '/pending',
params: { type: 'pending' },
parent: 'aggregators',
templateUrl: 'views/aggregators/index.html',
controller: 'AggregatorsCtrl'
}
[...]
// Controller
var vm = this;
var type = $state.params.type;
vm.processos = [];
$scope.$watch(type, function () {
if (type === 'concluded') {
getConcludedProcesses();
} else if (type === 'pending') {
getPendingProcesses();
}
});
function getPendingProcesses() {
// Resource call
ProcessesService.getProcessosPendentes({ qtdDias: 12 }, function (response) {
updateProcessos(response);
});
}
function updateProcessos(response) {
var processos = [];
angular.forEach(response, function (e, key) {
processos.push({
[..]
});
});
vm.processos = processos;
}
问题:当我第一次处于状态待处理时,一切都正常加载并且视图会更新。当我将状态更改为结束并更新 vm.processos 变量时,视图不会更新。但是,当我将 vm.processos 更改为 $ scope.processos 时,视图会更新。在问题上下文中使用 此 而不是 $ scope 有什么问题和区别?
我尝试使用 this 而不是 $ scope 来按照Angular的最佳做法对变量进行建模。
修改1 :
当使用这种方式时,我使用Controller作为synthax。
ng-controller="AggregatorsCtrl as aggregator"
[...]
ng-repeat="processo in aggregator.processos"
[...]