특정 팩토리를 사용하여 특정 웹 서비스를 폴링합니다. 이 웹 서비스는 모든 데이터를 공장에서 업데이트하는 데 사용됩니다. 주 컨트롤러에서이 팩토리를 시작하고 팩토리 함수를 통해 범위 변수를 채 웁니다. 변수가 올바르게 초기화되고 화면에 올바른 데이터가 표시되지만 데이터를 자동으로 바인딩하는 데 어려움을 겪고 있습니다.각도 - 팩토리 데이터가 변경 될 때 범위 업데이트
추가 노트 편집 : 이 코드가 공장에있는 이유는 공장 데이터를 여러보기에서 사용할 계획이기 때문입니다.
App.factory('metrics', function($http, $q, $timeout){
var service;
var users = [{laps:[]}];
var updateMetrics = function(){
//updates the users array in the factory
};
service.load = function(){
var deferred = $q.defer();
$http.get('http://www.example.com/api/random').success(function(data) {
var temp_array = data.split("\n");
updateMetrics(0, temp_array);
deferred.resolve({status: 'good'});
$timeout(service.load,3000);
});
return deferred.promise;
};
service.lastLapInfo = function(){
var lastlap = [];
for (var i=0; i<users.length;i++)
{
var lap = users[i].laps[users[i].laps.length-1];
lastlap.push(lap);
}
return lastlap;
};
return service;
});
App.controller('mainController', function($scope, metrics) {
metrics.load().then(function(response){
$scope.$watch(function() { return metrics.lastLapInfo() }, function (newVal, oldVal) {
if (newVal !=oldVal)
{
$scope.users=metrics.lastLapInfo();
}
});
});
});
내가 위를하려고 할 때, 나는 '10 $ 다이제스트에 도달() 반복 '라는 오류를 얻을 : 여기
는 내가 지금까지 가지고있는 것입니다. 시계 기능을 여러 번 호출하지 않기 때문에 가능한 방법을 모르겠습니다.
어떤 제안 (또는 다른 수단 내가 할 노력하고있어 달성하기 위해?)
'$ service.load' (당신의 프로젝트에'service' 접두어'$')에 당신의 오타가 있습니까? –
사과 - 프로젝트에서 구문이 정확하지만 복사/붙여 넣기 중에 문법이 엉망이어야합니다. 문제를 해결하기 위해 질문을 수정했습니다. – darudude