저는 각도를 배우고 있습니다 - 현재 웹 응용 프로그램 사용자의 계정에 대한 정보를 ajax를 통해로드하는 애플리케이션이 있습니다.AngularJS/Bootstrap은 서비스 객체에 대한 변경 사항을 보지 못합니다.
문제는 내가 사용자 계정 결과가 들어 왔을 때 절대로 모르는 것처럼 보이는 각도/부트 스트랩 모달을 사용하고 있다는 것입니다. 표준 템플릿은 잘 작동하며 사용자 계정 데이터가 변경되면 새로 고칩니다. 모달 문제이거나 코드를 잘못 구성하는 경우 확실하지 않습니다.
나는 현재 사용자 정보를 저장하는 userAccount
의 공장/서비스를 가지고 있습니다.
아약스 요청은 사용자 정보를 잡고, 그래서 분명히 약간의 지연이있다 :
$scope.$watch(function(){return userAccount;}, function(newUser,oldUser){
$scope.user = newUser.user;
}, true);
: 내 루트 응용 프로그램 컨트롤러가 변경이 값을 감시하고 그것을 다른 필요한 행동 사이의 범위를 지정
$http({method: 'GET', url: 'api/url'}).success(function(resp, status, headers, config){
if(resp.results){
userAccount.user = resp.results;
}
});
#/account
에 대한 경로/컨트롤러 설정을 통해 사람을 계정 모드에 직접 연결할 수 있습니다. 그러나 사용자 계정 데이터가 반환되지 않은 시점에 모달이 열리고 userAccount
정보가 변경되지 않습니다. 테스트하려면 계정 컨트롤러에 watch
을 추가하고 이벤트가로드시 한 번만 발생했습니다.
사용자 ajax 후에 모달을 열면 모두 정상적으로 작동합니다. 이는 모달이 원본에 대한 참조가 아닌 userAccount
객체의 복사본을 얻는 것과 같습니다. 코멘트를
.controller('AccountController', function ($scope, $modal, $http, userAccount) {
var modalInstance = $modal.open({
templateUrl: 'modules/modal/account.tpl.html',
controller: ['$scope', '$http', 'userAccount', function ($scope, $http, userAccount) {
$scope.keys = userAccount.user.keys;
// Never alerted to changes for userAccount, even if watching.
}]
});
})
, 내가 모달을 위해 사용하고 경로 :
.config(function($stateProvider){
$stateProvider
.state('account', {
url: "/account",
views: {
"modal": {
template: '',
controller: 'AccountController'
}
},
data:{ pageTitle: 'My Account' }
});
})
뭔가 내가 각도에서 제대로 안하고에 어떤 도움이나 조언이 감사합니다.
경로 설정이란 무엇입니까? – dfsq
@ dfsq 질문에 경로 설정을 추가했습니다. – helion3