Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Игнорируется условие оО [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Без описания
nerv
Отправлено: 15 Июля, 2015 - 09:26:41
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




etoYA

1. что мешает описать нормальный es5 класс? Только не говори мне, что в js нету классов Ха-ха
CODE (javascript):
скопировать код в буфер обмена
  1. function Server(id) {
  2.     // init here
  3. }
  4.  
  5. Server.prototype.getDataFromCollection = function() {};
  6. Server.prototype.getDataFromServer = function() {};
  7.  
  8. // usage
  9. var server = new Server(1);


эта строка не имеет смысла, т.к. в реальности ответ сервера асинхронный
CODE (javascript):
скопировать код в буфер обмена
  1. var data = this.getDataFromCollection(id) || this.getDataFromServer(id);


-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
etoYA
Отправлено: 15 Июля, 2015 - 10:25:47
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




При клике на ссылку, необходимо вызвать класс. А как сделать правильнее?

1) Создать один экземпляр класса, в init которого будет передаваться нужный параметр


в данном случае будет один объект на все сервера, а значит, можно внутри этого класса сделать массив с данными, чтоб не таскать их все время с сервера.
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var myClass = new MyClass();
  3. [].forEach.call(document.getElementsByClassName('myLink'), function(a){
  4.      myClass.init(a.getAttribute('data-param'));
  5. });
  6.  



2) Создавать экземпляр класса при каждом клике на ссылку, в конструктор которого передавать нужный параметр


В этом случае придется записывать данные в глобальный объект с данными
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. [].forEach.call(document.getElementsByClassName('myLink'), function(a){
  3.     let myClass = new MyClass(a.getAttribute('data-param'));
  4. });
  5.  

3) Использовать вариант #2, но забить на все и всегда таскать данные с сервера

p.s по сути есть 4й вариант, но я так и не смог его реализовать
Создаем новый класс, в котором свойство - массив с данными и 2 статических метода, в котором и происходит поиск и получение данных, запись данных. Основной класс обращается к этому классу и получает данные.

MyClass (Отобразить)

(Отредактировано автором: 16 Июля, 2015 - 18:09:06)

 
 Top
etoYA
Отправлено: 16 Июля, 2015 - 18:11:28
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




Знаю, что это вряд ли относится к JavaScript, а скорей к ООП, а точнее, к структуре проекта на ООП. Но, капец, я не могу двинуться дальше =).

Если кто-то может дать пример структуры, либо ткнуть меня носом в opensource проект, ну или книжку по организации кода в JS =)

(Отредактировано автором: 16 Июля, 2015 - 18:14:52)

 
 Top
nerv
Отправлено: 19 Июля, 2015 - 23:10:37
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




etoYA пишет:
При клике на ссылку, необходимо вызвать класс

неправильное рассуждение

etoYA пишет:
При клике на ссылку

тебе необходимо совершить действие, которое описывается методом класса (в данном случае)

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

придется много и долго растолковывать тебе что к чему, но я не располагаю временем, чтобы это сделать)

в качестве "тренировки на кошках" могу посоветовать fetch api
https://github[dot]com/github/fetch
http://habrahabr[dot]ru/post/252941/
https://developer[dot]mozilla[dot]org/en[dot][dot][dot]eb/API/Fetch_API


etoYA пишет:
p.s по сути есть 4й вариант, но я так и не смог его реализовать

в целом ты правильно описал (синтаксически). Как быстро проверить свою реализацию написано здесь


etoYA пишет:
ну или книжку по организации кода в JS

почитай "Стоян Стефанов - JavaScript. Шаблоны". Несмотря на то, что она уже частично устарела, там есть полезная информация.


-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
etoYA
Отправлено: 20 Июля, 2015 - 15:36:13
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




nerv, спасибо за ссылки.
Fetch - на первый вгляд очень круто, уже порядком поднадоел XHR, как минимум из за
habrahabr.ru/post/252941/ пишет:
катастрофического количества callback'ов


Искал замену XHR в es6, но ничего не нашел.
А либы, аля jQuery использовать не хочу, ибо они только отвлекают от js (в период обучения). имхо

(Отредактировано автором: 20 Июля, 2015 - 16:45:40)

 
 Top
nerv
Отправлено: 21 Июля, 2015 - 10:02:34
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




etoYA пишет:
Искал замену XHR в es6, но ничего не нашел.

ты путаешь "ядро" языка и среду браузера. xhr - это браузерный объект
https://learn[dot]javascript[dot]ru/browser-environment


-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB