Javascript.RU

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

Проблемы совмещения Angular и Datatables
Всем привет!
Может кто-нибудь с такой проблемой сталкивался или сможет указать, что я неверно делаю.

Проблема такая:

Для отображения таблицы и работы с ней (paging, filter, order и т.п.) использую плагин Datatables (http://www.datatables.net/)

.row(ng-controller="MyController")
    .col-xs-12
        table#example.table.table-striped(cellspacing='0', width='100%')
            thead
                tr
                    th #
                    th Дата
                    th Задача
                    th Тип задачи
                    th Статус 
                    th Очередь
            tfoot
                tr
                    th #
                    th Дата
                    th Задача
                    th Тип задачи
                    th Статус 
                    th Очередь
            tbody
                tr(ng-repeat="row in rowCollection")
                    td {{row.issue_id}}
                    td {{row.date_issue}}
                    td {{row.issue_text}}
                    td {{row.group_of_support}}
                    td {{row.issue_status}}
                    td {{row.issue_queue}}

script(type='text/javascript').
            $(document).ready(function () {
                $('#example').DataTable();
            });


В контроллере пока что просто передаю небольшой набор данных:

Код:
      $scope.rowCollection = [
        {issue_id: 2545, 
		 date_issue: new Date('2015-08-26'), 
		 issue_text: 'Не работает кнопка', 
		 group_of_support: '2', 
		 issue_status: 'В процессе', 
		 issue_queue: '0'
		 },
        {issue_id: 6581, 
		 date_issue: new Date('2015-08-27'),
		 issue_text: 'не работает сервер',
		 group_of_support: '3',
		 issue_status: 'Новая',
		 issue_queue:'2'},
        {issue_id: 54885, 
		 date_issue: new Date('2015-08-27'),
		 issue_text: 'Зависла программа',
		 group_of_support: '5',
		 issue_status: 'Отложена',
		 issue_queue: '4'}
      ]
Отображается прекрасно, но если я начинаю в браузере вводить в поиск значение для этой таблицы, сортировать таблицу, то все падает...

вместо данных я лишь вижу свои переменные {{row.issue_id}} и .т.д.

Надеюсь на помощь!
Ответить с цитированием
  #2 (permalink)  
Старый 06.02.2015, 09:32
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Сообщение от uuushka
Отображается прекрасно, но если я начинаю в браузере вводить в поиск значение для этой таблицы, сортировать таблицу, то все падает...
вместо данных я лишь вижу свои переменные {{row.issue_id}} и .т.д.
Какими "средствами" происходит "изменение" данных? Angular их меняет или тот плагин?
Ответить с цитированием
  #3 (permalink)  
Старый 06.02.2015, 09:35
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Сообщение от uuushka
В контроллере пока что просто передаю небольшой набор данных:
Т.е. сам angular данные модели не меняет... Т.ч. вот и ответ на твой вопрос.
Angular должен сам данные запрашивать у сервера. Тогда и вид будет меняться, соответственно данным модели.
Ответить с цитированием
  #4 (permalink)  
Старый 06.02.2015, 13:22
Новичок на форуме
Отправить личное сообщение для uuushka Посмотреть профиль Найти все сообщения от uuushka
 
Регистрация: 12.11.2014
Сообщений: 9

Сообщение от ksa Посмотреть сообщение
Т.е. сам angular данные модели не меняет... Т.ч. вот и ответ на твой вопрос.
Angular должен сам данные запрашивать у сервера. Тогда и вид будет меняться, соответственно данным модели.
Меняется средствами плагина, да. То есть плагин позволяет сортировать, например, по нажатию на имя столбца. но какие данные запрашивать у сервера, если меняется таблица на клиенте с помощью этого плагина от jQuery?
Ответить с цитированием
  #5 (permalink)  
Старый 06.02.2015, 13:29
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Сообщение от uuushka
но какие данные запрашивать у сервера, если меняется таблица на клиенте с помощью этого плагина от jQuery?
Напомню основное правило angular - именно он отвечает как за модель, так и за ее отображение на странице!

Если какая-то другая "сила" начнет менять внешнее представление - будет некая фигня. В твоем случае вот такая.
Сообщение от uuushka
вместо данных я лишь вижу свои переменные {{row.issue_id}} и .т.д.
Ответить с цитированием
  #6 (permalink)  
Старый 06.02.2015, 13:33
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Сообщение от uuushka
плагин позволяет сортировать, например, по нажатию на имя столбца
Это теперь должен делать angular. Там, к стати, есть и сортировка...
Вот пример из "обучения" как это нужно делать
http://angular.ru/tutorial/step_04
Ответить с цитированием
  #7 (permalink)  
Старый 06.02.2015, 13:38
Новичок на форуме
Отправить личное сообщение для uuushka Посмотреть профиль Найти все сообщения от uuushka
 
Регистрация: 12.11.2014
Сообщений: 9

Сообщение от ksa Посмотреть сообщение
Это теперь должен делать angular. Там, к стати, есть и сортировка...
Вот пример из "обучения" как это нужно делать
http://angular.ru/tutorial/step_04
большое спасибо! стало куда понятнее =)
Ответить с цитированием
  #8 (permalink)  
Старый 06.02.2015, 14:00
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

uuushka, вот как это должно работать в angular

<!DOCTYPE html>
<html ng-app>
<head>
<script src="http://code.angularjs.org/1.1.4/angular.min.js"></script>
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
#order_info > span {
	font-weight: bold;
}
.order-name {
	color: blue;
	cursor: pointer;
}
.order-name:hover {
	color: red;
}
</style>
<script type='text/javascript'>
function MyController($scope){
	$scope.orderField='issue_id';
	$scope.newOrder=function(Name){
		$scope.orderField=Name;
	};
	$scope.rowCollection = [
		{
			issue_id: 2545, 
			date_issue: new Date('2015-08-26'), 
			issue_text: 'Не работает кнопка', 
			group_of_support: '2', 
			issue_status: 'В процессе', 
			issue_queue: '0'
		},
		{
			issue_id: 6581, 
			date_issue: new Date('2015-08-27'),
			issue_text: 'не работает сервер',
			group_of_support: '3',
			issue_status: 'Новая',
			issue_queue:'2'
		},
		{
			issue_id: 54885, 
			date_issue: new Date('2015-08-27'),
			issue_text: 'Зависла программа',
			group_of_support: '5',
			issue_status: 'Отложена',
			issue_queue: '4'
		}
	]
};
</script>
</head>
<body ng-controller="MyController"> 
<p id='order_info'>Сейчас сортировка по полю <span>{{orderField}}</span></p>
<table>
	<thead>
		<tr>
			<th ng-click='newOrder("issue_id")' class='order-name'>#</th>
			<th ng-click='newOrder("date_issue")' class='order-name'>Дата</th>
			<th>Задача</th>
			<th>Тип задачи</th>
			<th>Статус</th>
			<th>Очередь</th>
		</tr>
	</thead>
	<tbody>
		<tr ng-repeat="row in rowCollection| orderBy: orderField">
			<td>{{row.issue_id}}</td>
			<td>{{row.date_issue}}<td>
			<td>{{row.issue_text}}<td>
			<td>{{row.group_of_support}}<td>
			<td>{{row.issue_status}}<td>
			<td>{{row.issue_queue}}<td>
		</tr>
	</tbody>
</table>
</body>
</html>

Последний раз редактировалось ksa, 06.02.2015 в 14:04.
Ответить с цитированием
  #9 (permalink)  
Старый 06.02.2015, 14:07
Новичок на форуме
Отправить личное сообщение для uuushka Посмотреть профиль Найти все сообщения от uuushka
 
Регистрация: 12.11.2014
Сообщений: 9

спасибоу))
Ответить с цитированием
  #10 (permalink)  
Старый 06.02.2015, 14:32
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

uuushka, меня поперло!

<!DOCTYPE html>
<html ng-app>
<head>
<script src="http://code.angularjs.org/1.1.4/angular.min.js"></script>
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
#order_info > span {
	font-weight: bold;
}
.order-name {
	color: blue;
	cursor: pointer;
}
.order-name:hover {
	color: red;
}
</style>
<script type='text/javascript'>
function MyController($scope){
	$scope.orderField='issue_queue';
	$scope.newOrder=function(Name){
		$scope.orderField=Name;
	};
	$scope.rowCollection = [
		{
			issue_id: 2545, 
			date_issue: new Date('2015-08-26'), 
			issue_text: 'Не работает кнопка', 
			group_of_support: '2', 
			issue_status: 'В процессе', 
			issue_queue: '0'
		},
		{
			issue_id: 6581, 
			date_issue: new Date('2015-08-27'),
			issue_text: 'не работает сервер',
			group_of_support: '3',
			issue_status: 'Новая',
			issue_queue:'2'
		},
		{
			issue_id: 54885, 
			date_issue: new Date('2015-08-27'),
			issue_text: 'Зависла программа',
			group_of_support: '5',
			issue_status: 'Отложена',
			issue_queue: '4'
		}
	]
	$scope.status=[
		'Новая',
		'В процессе',
		'Отложена',
		'Завершена'
	];
};
</script>
</head>
<body ng-controller="MyController"> 
<p id='order_info'>Сейчас сортировка по полю <span>{{orderField}}</span></p>
<table border='1'>
	<thead>
		<tr>
			<th ng-click='newOrder("issue_id")' class='order-name'>#</th>
			<th ng-click='newOrder("date_issue")' class='order-name'>Дата</th>
			<th>Задача</th>
			<th>Тип задачи</th>
			<th ng-click='newOrder("issue_status")' class='order-name'>Статус</th>
			<th ng-click='newOrder("issue_queue")' class='order-name'>Очередь</th>
		</tr>
	</thead>
	<tbody>
		<tr ng-repeat="row in rowCollection| orderBy: orderField">
			<td>{{row.issue_id}}</td>
			<td>{{row.date_issue}}</td>
			<td>{{row.issue_text}}</td>
			<td>{{row.group_of_support}}</td>
			<td>
				<select ng-model="row.issue_status">
					<option ng-repeat='i in status' >{{i}}</option>
				</select>
			</td>
			<td><input ng-model='row.issue_queue' value={{row.issue_queue}} /></td>
		</tr>
	</tbody>
</table>
</body>
</html>

Начальство приказало изучать angular... Т.ч. нужно тренироваться!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы со слайдером. Shupamen Работа 1 15.12.2013 00:12
Angular и динамический контент Diem Angular.js 1 26.07.2013 18:57
dataTables + jeditable не получается сделать поля редактируемыми alekslkta Элементы интерфейса 0 02.05.2011 16:17
dataTables + jeditable не получается сделать поля редактируемыми alekslkta jQuery 0 01.05.2011 23:53
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37