Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.07.2015, 08:17
Новичок на форуме
Отправить личное сообщение для Alex_D181 Посмотреть профиль Найти все сообщения от Alex_D181
 
Регистрация: 10.06.2015
Сообщений: 7

Связь данных сервиса и вьюхи
Доброго времени суток. Возникла такая проблема. У меня есть сервис (фабрика), которая отвечает за данные, и передает их в контроллер, который выводит их на экран. Суть проблемы в том, что сервис успешно обновляет данные, но информация на экране не изменяется.

Теперь код. Простейшая HTML структура
<!DOCTYPE html>
<html lang="ru" ng-app="app">
<head>
    <meta charset="UTF-8">
    <title>Тестируем сервис</title>
    <script src="bower_components/angular/angular.min.js"></script>
    <script src="js/app.js"></script>
</head>
<body ng-controller="testCtrl">
 
<p>{{data}}</p>
</body>
</html>


var app = angular.module('app', []);
app.factory('dataService', function () {
    var data = {
        number: 1
    };
    function changeData() {
        var number = Math.floor(Math.random( ) * (359+1));
        data.number = number;
    };
    setInterval(changeData,1000);
    return data;
});
 
app.controller('testCtrl', function ($scope, dataService) {
    console.log(dataService);
    $scope.data = dataService.number;
});
Ответить с цитированием
  #2 (permalink)  
Старый 29.07.2015, 09:01
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,202

Сообщение от Alex_D181
но информация на экране не изменяется.
Ангулар просто не знает, что у тебя работает setInterval()...
Возьми за основу мой пример, потом используй свою фабрику...

<!DOCTYPE html>
<html ng-app="app">
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
<link rel="stylesheet/less" type="text/css" href="style.less">
<script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/2.5.0/less.min.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
var app = angular.module('app', []);

app.controller(
	'ctrl', 
	[
		'$scope',
		'$interval',
		function($scope,$interval) {
			$scope.data=1;
			$interval(function(){
				$scope.data=Math.floor(Math.random( ) * (359+1));
			},1000);
		}
	]
);
</script>
</head>
<body ng-controller="ctrl">
<p>{{data}}</p>
</body>
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не понимаю JavaScript. Как сделать ожидание события загрузки данных? xintrea AJAX и COMET 7 01.06.2013 17:18
отправка данных из формы и вывод полученных данных sxe jQuery 2 21.05.2013 00:34
Двойная Фильтрация данных таблицы David0707 Общие вопросы Javascript 0 19.03.2012 13:00
Изменение окраски строк таблицы, исходя из данных? Space-06 Events/DOM/Window 4 14.02.2012 21:32
jqGrid. локальная обработка данных DarkN jQuery 0 25.01.2011 23:55