Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.06.2015, 23:32
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

как сформировать свойство функции
Есть свойство функции
data: [
{ year: '2008', value: 20 },
    { year: '2009', value: 10 },
    { year: '2010', value: 5 },
    { year: '2011', value: 5 },
    { year: '2012', value: 20 }  */
  ],

как его записать в таком виде из следующего массива array? Чтобы получать это свойство динамически?
'0' :
        'year' => "4"
        'value' => "100"
    '1' :
        'year' => "100"
        'value' => "200"
    '2' :
        'year' => "8"
        'value' => "100"
    '3' :
        'year' => "19"
        'value' => "300"
Ответить с цитированием
  #2 (permalink)  
Старый 13.06.2015, 09:05
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

imedia,
Я в php не силён, но думаю массив нужно пробегать foreach, который будет формировать новый ассоциативный массив и для значений year запускать функцию, которая будет их в года преобразовывать. Только входящий массив странный какой-то, вот это 'year' => "100" в какой год должно преобразоваться?
Далее echo json_encode($arr); На клиенте JSON.parse(str) и присобачиваете полученный массив объектов как свойство своей функции.
Ответить с цитированием
  #3 (permalink)  
Старый 13.06.2015, 10:06
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

это javascript, а вопрос именно в том как присобачить
new Morris.Line({
  // ID of the element in which to draw the chart.
  element: 'myfirstchart',
  // Chart data records -- each entry in this array corresponds to a point on
  // the chart.
  data: [
{ year: '2008', value: 20 },
    { year: '2009', value: 10 },
    { year: '2010', value: 5 },
    { year: '2011', value: 5 },
    { year: '2012', value: 20 }  */
  ],
  // The name of the data record attribute that contains x-values.
  xkey: 'year',
  // A list of names of data record attributes that contain y-values.
  ykeys: ['value'],
  // Labels for the ykeys -- will be displayed when you hover over the
  // chart.
  labels: ['Value']
});

года странные в массиве но это не имеет значение, просто числа там проходят

Последний раз редактировалось imedia, 13.06.2015 в 10:11.
Ответить с цитированием
  #4 (permalink)  
Старый 13.06.2015, 11:01
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

imedia,
data это не свойство функции, а свойство объекта, который передаётся конструктору Morris.Line в качестве аргумента. Изменить этот объект можно до передачи его в функцию. Как-то так:
var options = {
  // ID of the element in which to draw the chart.
  element: 'myfirstchart',
  // Chart data records -- each entry in this array corresponds to a point on
  // the chart.
  data: [
    { year: '2008', value: 20 },
    { year: '2009', value: 10 },
    { year: '2010', value: 5 },
    { year: '2011', value: 5 },
    { year: '2012', value: 20 } 
  ],
  // The name of the data record attribute that contains x-values.
  xkey: 'year',
  // A list of names of data record attributes that contain y-values.
  ykeys: ['value'],
  // Labels for the ykeys -- will be displayed when you hover over the
  // chart.
  labels: ['Value']
};

options.data = [
    { year: '2013', value: 25 },
    { year: '2009', value: 10 },
    { year: '3010', value: 50 },
    { year: '2051', value: 4 },
    { year: '2012', value: 20 } 
  ];

new Morris.Line( options );
Ответить с цитированием
  #5 (permalink)  
Старый 13.06.2015, 11:45
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

да но у меня есть массив array
'0' :
        'year' => "4"
        'value' => "100"
    '1' :
        'year' => "100"
        'value' => "200"
    '2' :
        'year' => "8"
        'value' => "100"
    '3' :
        'year' => "19"
        'value' => "300"

как именно его прировнять к этому options.data формату, и к тому же ваш вариант не переопределяет массив значений

Последний раз редактировалось imedia, 13.06.2015 в 11:49.
Ответить с цитированием
  #6 (permalink)  
Старый 13.06.2015, 12:34
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Сообщение от imedia
и к тому же ваш вариант не переопределяет массив значений
А это что тогда?:
options.data = [
    { year: '2013', value: 25 },
    { year: '2009', value: 10 },
    { year: '3010', value: 50 },
    { year: '2051', value: 4 },
    { year: '2012', value: 20 } 
  ];

Сообщение от imedia
как именно его прировнять к этому options.data формату
Посылаете ajax запрос, на сервере через json_encode($arr) превращаете ваш массив в строку и отсылаете клиенту, в браузере через JSON.parse(request.responseText) получаете массив и присваиваете options.data
Ответить с цитированием
  #7 (permalink)  
Старый 13.06.2015, 13:05
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

массив уже в яваскрипте как его присвоить option.data ? покажите на примере он же с основными ключами, и у вас все таки option.data не переопределяет, сейчас выложу сам фреймворк по построению графиков
Ответить с цитированием
  #8 (permalink)  
Старый 13.06.2015, 13:06
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.min.js"></script>

<div id="myfirstchart" style="height: 250px;"></div>
<script>
new Morris.Line({
  // ID of the element in which to draw the chart.
  element: 'myfirstchart',
  // Chart data records -- each entry in this array corresponds to a point on
  // the chart.
  data: [
    { year: '2008', value: 20 },
    { year: '2009', value: 10 },
    { year: '2010', value: 5 },
    { year: '2011', value: 5 },
    { year: '2012', value: 20 }
  ],
  // The name of the data record attribute that contains x-values.
  xkey: 'year',
  // A list of names of data record attributes that contain y-values.
  ykeys: ['value'],
  // Labels for the ykeys -- will be displayed when you hover over the
  // chart.
  labels: ['Value']
});
options.data = [
    { year: '2013', value: 25 },
    { year: '2009', value: 10 },
    { year: '3010', value: 50 },
    { year: '2051', value: 4 },
    { year: '2012', value: 20 }
  ];
 
new Morris.Line( options );
</script>

Видите нет переопределения
Ответить с цитированием
  #9 (permalink)  
Старый 13.06.2015, 13:26
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

imedia,
Вот так надо:
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.min.js"></script>

<div id="myfirstchart" style="height: 250px;"></div>


<script>

var options = {
  // ID of the element in which to draw the chart.
  element: 'myfirstchart',
  // Chart data records -- each entry in this array corresponds to a point on
  // the chart.
  data: [
    { year: '2008', value: 20 },
    { year: '2009', value: 10 },
    { year: '2010', value: 5 },
    { year: '2011', value: 5 },
    { year: '2012', value: 20 } 
  ],
  // The name of the data record attribute that contains x-values.
  xkey: 'year',
  // A list of names of data record attributes that contain y-values.
  ykeys: ['value'],
  // Labels for the ykeys -- will be displayed when you hover over the
  // chart.
  labels: ['Value']
};

options.data = [
    { year: '2013', value: 25 },
    { year: '2009', value: 10 },
    { year: '3010', value: 50 },
    { year: '2051', value: 4 },
    { year: '2012', value: 20 } 
  ];

new Morris.Line( options );


</script>
Ответить с цитированием
  #10 (permalink)  
Старый 13.06.2015, 13:29
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

imedia,
'0' :
        'year' => "4"
        'value' => "100"
    '1' :
        'year' => "100"
        'value' => "200"
    '2' :
        'year' => "8"
        'value' => "100"
    '3' :
        'year' => "19"
        'value' => "300"

Такая форма массива характерна только для php, js ошибку выдаст, он не знает что такое =>.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как переименовать свойство объекта? Маэстро Events/DOM/Window 28 25.10.2012 17:02
Как временно запретить вызов функции? Dazar Общие вопросы Javascript 9 02.09.2012 22:52
Как понять, какому объекту принадлежит свойство? Елена-Котяра Events/DOM/Window 1 16.02.2012 02:19
JS классы - как объединить функции в класс olga153b Events/DOM/Window 3 01.11.2011 14:13
bind: как передать функции указатель на объект trial jQuery 4 25.05.2010 01:35