Question for JSApp exam - за варианта на Жоро


1
В main.js файла имаме създаване на един localPersister и accessController. В логиката, която аз донаписах самия AccessController има метод за създаване на login container и при кликване на login бутона този метод трябва да извика localPersister.users.login(" "," "), но той няма достъп до него, и се чудя дали този метод трябва да е тук, според мен да, но не ми хрумва как да му осигуря достъп. След като controler.js модула прави връзката м/у UI и data-persister, то значи той трябва да контролира методите и в двата класа, но тогава създаването на accessController в main.js е излишно. Как трябва да е според вас?




Отговори



0

Създаваш accessControler за да можеш да му подадеш като параметър persister-a, който да използваш след това в controller-a. По този начин в контролера можеш да достъпваш данните.

    var persister = BullsAndCows.persisters.get(serviceRoot);
    var controller = BullsAndCows.controller.get(persister);
    controller.loadUI("#wrapper");
 
Edit:
Единия вариант е да си направиш persister в конструктора на контролера с определен root, а другия е да му го подадеш отвън пак на конструктора. В единия случай по-лесно можеш да си промениш адреса или да подадеш някакъв друг persister.
Мисля, че варианта с подаването на persister отвън е по-добър откъм преизползваемост.
Струва ми се, че не можах да го обясня много добре. Ако не разбра нещо питай.

от VGeorgiev (2890 точки)


0
това, което ми го обясни го разбрах, но в методите на контролера, нямам достъп до персистера и той не е видим, въпроса ми е как да го достъпя вътре в другите методи на контролера, не само в init?

от AsenVal (3487 точки)

0
Запазваш си го като поле на AccessController-a. Т.е. в init просто казваш this.persister = persisterParameter, където persisterParameter ти е параметърът подаден на init :)