[JS Frameworks] Домашно Require.JS


5

Link: https://github.com/vlad0/TelerikAcademy/tree/master/JSFrameworks/Require.JS

Demo: http://screencast.com/t/hGH3XliLr

Обединих първа и втора задача в едно: съответно, като си избереш студент от ComboBox-a му зарежда оценките. За целта в темплейтите на студентите добавям тяхното id и го използвам когато се достъпи click event-a, за да мога да направа заявка до API-то и да дръпна оценките, които се рендират допълнително.

Незнайно защо при мен, JS файловете се кешират и всеки път като направя промяна трябваше да отварям нов Tab. При някои колеги "проблема" се реши като отвориха Инкогнито режим на Chrome Ctrl+Shift+N




Отговори



1

За да не се кешират, трябва да се подадат специални хедъри от страна на сървъра (вж. http://stackoverflow.com/questions/49547/). Понеже няма сървър, това няма как да стане.


от svetlin.nakov (31978 точки)


2

И ние с Виктор ползвахме същото API  за да ни генерира информацията за попълване в ComboBox -а, изтегляме цялата информация с една заявка, и я напъхваме в един лист които е скрит преди да се кликне за да се появи.

А в първата задача имаме начална информация, после с клик се прави заявка към сървара да се зареди информацията от него.

Задача линк


от Gerya (1079 точки)


1

Решения

Ето ги и моите 2 задачи. Не съм ги комбинирал, за да се поупражня. А за дизайна - както винаги, оставих си ръцете там.


от georgi.ivanov (3261 точки)


2

Source

1ва задача е лека симулация на sami през localstorage. Когато се кликне на студента му се записва обекта и после при оценките се взема от localstorage-а за да се изпишат на екрана.


от saykor (8845 точки)


4

Решение на първата задача.

Използвах демото на Дончо с тази разлика, че в data-persister'a зареждам информацията от WebAPI-то, а не от локален файл. Промених и темплейтите.

При клик върху студент зареждам на "друга" страница само оценките на студента, например:

Math: 4
C#: 6

Edit: Качих и втората задача
За нея ми помогнаха iordan_93, ScorpS и Svgn_H -
колеги, благодаря ви :-))


от sabrie_n (625 точки)


0
При клик върху някакво "li" може да скриеш всички съседните li-та.
$("#ul").on("click", "li", function() { $(this).siblings().hide(); });

от SVGN_H (3048 точки)

0
Благодаря ти, Севгин :-) Ще го използвам за втората задача :-)

от sabrie_n (625 точки)


2

Ето и моите задачи.
Първа използвах sammy.js за да генерирам две страници, при кликване на някой студент, зареждам от базата, оценките му и генерирам таблица с тях. Получи се сравнително добре, като не съм се задълбавал в css-а. Използвам q-промиси и jquery за event handler.
Едит:
Втора задача, качих и нея, използвам mustache-template от лекцията, като за реализирането на comboBox-а ползвам само jquery, получи се доста елегантно. Поиграх си да сложа и малко css, за по-добра визия


от AsenVal (3487 точки)


1

Малко в страни от темата, но вчера по едно време издъхнах да пиша домашни и реших да си поиграя с Kendo. Честно казано съм доста впечатлен :D Досега не съм имал време да си играя, но лудница, много ми хареса. Ето какво направих за 5мин. (като преди това се ориентирах в документацията около 30мин).

Код: http://pastebin.com/jnpPX77M - само тествах и за това е inline;
Видео: http://www.screencast.com/t/hjejjrM71GSR


от plamen.yovchev (3283 точки)


7

Ако на някой му дава следният "error load timeout for modules requirejs". Напишете в

require.config({

waitSeconds: 200,
paths: {
jquery: "libs/jquery-2.0.3",
rsvp: "libs/rsvp.min",
httpRequester: "libs/http-requester",
mustache: "libs/mustache",
controls: "app/controls",
dataPersister: "app/data-persister"
}
});

от RamiAmaire (1868 точки)


0
Изчистването на кеша на браузъра също помага. Поради някаква странна причина, гадниата кешира всичко, всеки път и стават разни бъгове.

от Teodor92 (13062 точки)

0
Мерси, при мен този waitSeconds оправя и това, когато ми казва при всяко първо стартиране, че jQuery is undefined. Вече го зарежда от първия път.

от plamen.yovchev (3283 точки)


4

Не беше никак трудно това домашно, като че ли. В голямата си част беше копиране от на Дончо демото. Само с тоя кеш не можах да разбера, има ли оправия?

Домашно.


от tankovski (2828 точки)


0
Трябва да си играеш с хедърите на заявките, ама след 1 час игра и почти никакви резултати, аз го заебах.

от Teodor92 (13062 точки)

0
chrome има опция за изключване на кеша.

от staafl (5770 точки)


0

Имам малко issue: нещо не ми връзва require-a със class.js

ето снипета при data-persister:

define(["httpRequester", "class"], function (httpRequester, Class) { .. }

и в app:

require.config({
    paths: {
        ...
        "class": "lib/class"
    }
});
 
require(["jquery", "app/data"], function ($, data) {
    ...
});
 
Дори и като lib/class да го използвам в define, пак не ще. И не е кеш (даже в incognito го тествам)..
 
Мерси!

от nickeyz (878 точки)


0
Използвал ли си define(function() .... ) в самия class.js

от Божидар Пенчев (0 точки)

0
уф.. да, оказа се че съм ползвал стария class.js са ако успея и CORS да разкарам, още по-добре.. мерси!

от nickeyz (878 точки)