를 업데이트이 arent는 내가 어떤 신인 실수를하고 있어요, 그래서 만약 내가 참아주세요 :) 좋아 너무데이터 바인딩
을 나는이 site이 서버 모니터가에 대한 기본적 인 각도 꽤 새로운 해요 "Armagetron Advanced"라고 불리는 작은 게임. 이 서버 모니터는 사이트로 돌아올 때마다 json을 다시로드한다고 가정합니다. 여기
내 응용 프로그램에 대한 코드입니다 :controller('ServerBrowserController', function($scope, ServerDataFactory) {
$scope.loadServers = function() {
$scope.ServerData = ServerDataFactory.getServerDataWithQ();
//promise.then(function(data) {
//$scope.$apply(function() {
//$scope.ServerData = data;
//});
//});
}
document.addEventListener(visibilityChange, function() {
if(document[hidden] == false) {
$scope.loadServers();
}
}, false);
$scope.loadServers();
}).
factory('ServerDataFactory', function($http, $q) {
var deferred = $q.defer();
var factory = {};
factory.getServerDataWithQ = function() {
$http({ method: 'GET', url: '/new/app/serverxml_to_json.php' }).
success(function(data) {
deferred.resolve(data);
}).
error(function(data) {
alert("Couldn't load xml data.");
});
return deferred.promise;
};
return factory;
}).
는 HTTP 쿼리가 잘 처음 작동하지만, 최대한 빨리 사이트에 다시 와서 PHP 스크립트는 바인딩이 업데이트되지 않습니다, 다시 쿼리 데이터가 다르더라도 나는 이것이 자동적으로 내부적으로 $ apply를 scope에 적용하는 것으로 약속 했으므로 작동 할 것이라고 생각했지만 분명히 그렇지 않다.
$scope.$apply(function() {
$scope.ServerData = data;
}
을하지만 지금은 "$ 다이제스트가 이미 진행 [입니다]"고 말했기 때문에 그 또한 작동하지 않았다 : 그래서 나는 $ 수동으로 적용 전화를 시도했다. 그 이상한 것은 tho 였고, $ apply없이 사용했던 첫 번째 시도에서조차 작동하지 않았습니다. .
$scope.$$phase == "$digest" || $scope.$apply(function() {
$scope.ServerData = data;
}
그러나이 또한 $ 범위 때문에 작동하지 않았다 $$ 단계는 항상에 "$ 다이제스트"설정에 상관없이 : 다이제스트 문제에 대한 몇 가지 연구를하고 후, 솔루션 중 하나는 다음과 같은 시도 제안 처음의 데이터로드 또는 n 번째의 시간입니다.
내가 다음에 어디를 봐야할지 모르기 때문에 너희들이 나를 도울 수 있기를 바랍니다. 사전 :
와우, 내가 그걸 알아 채지 못했다고 나는 믿을 수 없다. 그런 어리석은 실수 ... 어쨌든, 고맙습니다 :) –