주요 데이터, 세부 정보, 주소 등을 표시하는 사용자 페이지를 작성하려고합니다. 첫 번째로드를 만들 때 화면을 변경하고 사용자 페이지로 돌아갈 때까지 내가 이미 그 페이지에 갔다 간 약속 약속이 돌아 왔기 때문에 그것은 문제가된다.공장 해결 후 AngularJs 컨트롤러 값이 업데이트되지 않습니다.
내가 앱이 동결 느낌 만들기 때문에 모든 데이터가 resolved
후 그것은 단지 화면을 바꿀 것입니다 때문에, stateChange
에 resolve
동안로드 할이 데이터를 사용 (하지 않음)하고, 그렇지 않은 경우 수 시간이 좀 걸리면 페이지가 작동하지 않는 것 같습니다.
factory
에와
$rootScope.$apply()
합니다 (
controller
에)
$scope.$digest()
를 사용했지만, 두 경우 모두가 나에게
digest running
오류를 제공합니다.
사용 올바른 방법이없는 한 .then()
은 옵션이 아닙니다. 첫 번째로드 후 해당 페이지로 돌아 가면 오류가 발생하기 때문입니다.
나는 이것이 parent
(추상)에서 controller
이다로드하고하는 factory
이 같은 그 값을 저장하고있어 방법 : 나는 또한 시작하기 때문에 모든 이들 데이터를로드 할 필요
//Parent Controller
function parentController(requestFactory, storeFactory, $q) {
var
user = storeFactory.userGet(),
data = storeFactory.dataGet()
[...more load...];
if(!user || !data ...) {
var promises = {
user: requestFactory.get('userGet'),
data: requestFactory.get('dataGet'),
[...more requests...]
};
return $q.all(promises).then(function(resolve){
storeFactory.userAdd(resolve.user);
storeFactory.dataAdd(resolve.data);
[...more update...]
});
}
}
//Factory
function storeFactory() {
var
data = null,
user = null,
address = null,
endereco = null;
var service = {
userGet: _userGet,
userAdd: _userAdd,
[...more definitions...]
};
return service;
function _userGet() {
return user;
}
function _userAdd(data) {
return user = data;
}
[...more functions...]
}
// child Controller 01
function child1Controller(storeFactory) {
vm.user = storeFactory.userGet();
}
// child Controller 02
function child2Controller(storeFactory) {
vm.address = storeFactory.addressGet();
}
을 이 종속 데이터는, 예를 들어, 주소, 사용자에 따라 등
그래서, 페이지 사용자가 액세스하는 경우> 주소는 아무 것도 표시되지 않는 것 화면을 볼 수 있습니다. 그러나 다른 페이지로 이동하여 돌아 왔을 때 모든 것이 보여지기 때문에 표시됩니다.
이 문제를 해결할 방법이 있습니까? 데이터를 자동으로 업데이트 하시겠습니까?
ui-router를 사용하는 경우 상태가 전환되기 전에 약속이 해결되어 데이터가 저장됩니다. 그렇지 않으면 컨트롤러에서 해결할 약속을 기다리고 그에 따라 UI를 업데이트하십시오. – reptilicus
@reptilicus하지만 ui-router 해결에서 사용하고 싶지 않습니다. 페이지가 작동하지 않는다고 생각하기 때문에 데이터가 해결되어 약간의 시간이 걸릴 수 있습니다. 컨트롤러에서 해결 방법을 사용할 때 해결 후 UI를 업데이트하는 데 문제가 있습니다. – celsomtrindade
그럼, 많은 약속이 해결되기를 기다리고 있다면 잠시 시간이 걸릴 것입니다. 약속을 그룹으로 나누어 UI를 업데이트하거나 요청을 줄이는 방법을 찾아야합니다. – reptilicus