Tento web používá soubory cookie. Dalším používáním webu s tímto souhlasíte.
jméno
heslo
přihlásit
zaregistrujte se
zapomněli jste heslo?
Knockout.js
KOM
24510
[http://knockoutjs.com/img/ko-logo.png]

Knockout is a JavaScript library that helps you to create rich, responsive display and editor user interfaces with a clean underlying data model. Any time you have sections of UI that update dynamically (e.g., changing depending on the user’s actions or when an external data source changes), KO can help you implement it more simply and maintainably.

Máte k tomu co říct? Vložte se do diskuze.
RAPTORCZ --- 13:07:10 28.11.2014
JULIEEHARSHAW: No ono je to právě ještě trošku složitější. Mám hodně sdílených knihoven, každý má svoje resource a DB slouží ještě navíc jako override resx souborů. Čili nejsem si moc jistý, že jsem vůbec schopen vygenerovat všechny resourcy tak jak jsou aktuální. Navíc kdykoliv se může DB změnit a tedy vygenerovaný JS už by byl nevalidní. Ale je pravda, že bych samozřejmě nerad generoval zbytečné requesty na server jen kvůli lokalizaci.
RAPTORCZ --- 7:54:30 28.11.2014
JULIEEHARSHAW: Brání - logika. Resourců ma aplikace tisíce, další resourcy jsou na straně databáze. A i kdyby při buildu všechno vyjelo do JS tak je nesmysl tahat na klienta stringy, které nepotřebuje. Pohrávám si s nějakou myšlenkou, že prostě viewmode bude na sobě mít deklarovanou kolekci resourců co používá a při vytvoření si prostě přes svc dotáhne překlady jen toho, co je třeba. Ale zase si říkám, zda už někdo nemá vymyšlené něco jiného a jinak. Hledám prostě inspiraci. Ono pak třeba bude nutno ty resourcy nějak klientsky cachovat atd.
RAPTORCZ --- 18:11:48 27.11.2014
Asi se to nevztahuje až tak úplně jen na KO, ale nějaký tip jak řešit lokalizaci UI? Základ bohužel je ten, že veškeré resources mi musí vracet server (Web API), nebo se musí generovat přímo do page jako nějaký dictionary. Texty jsou totiž v DB a v klasických resx souborech. Nemůže to být externí js soubor. Marně přemýšlím, jak to udělat efektivně. Nemám ani tak problém s bindingem na formu, ale jak tam dostat ty lokalizace (podle daného view modelu atd.)
RAPTORCZ --- 15:44:44 8.11.2014
KOM: No pokud se nepletu, tak $data konkrétní mám položku ContractAction té kolekce, $parent obsahovalo právě tu kolekci přes kterou jel foreach a tedy až $root obsahuje viewmodel. Ale spíše mě překvapilo, že v tom callbacku vlastně nemám přístup ke viewmodelu. A nebo je to jen tím, že vše dělám v TypeScriptu. Přímo v JS se to nějak možná pomocí self/this proměnných dá nahackovat.
KOM --- 14:44:38 8.11.2014
RAPTORCZ: Ja vždy používám $parent misto $root. A nikdy jsem se s tímto problémem nesetkal.

Btw. "foreach: contactActions()" by mělo házet error, ale knockout je benevolentní. Každopádně "contactActions" bys nemel volat. Je to pole...
RAPTORCZ --- 13:01:16 7.11.2014
Tak asi to mám, nevím zda je to ok. Prostě si předám root ve kterém je hlavní view model. Je to tak ok?

data-bind="click: $root.ContractActionClicked.bind($data, $root)"
RAPTORCZ --- 12:40:32 7.11.2014
pro info, mám tam asi něco takovéto

<ul class="dropdown-menu" data-bind="foreach: ContractActions()">
<li><a href="#" data-bind="click: $root.ContractActionClicked"><span class="icon-link"></span> <!--ko text: Name--><!--/ko--></a></li>
</ul>
RAPTORCZ --- 12:37:44 7.11.2014
Hmm, narazil jsem na problém. Mám click handler, který prostě spustí funkcni na view modelu. Jako parametr se tam krome eventu předávají data (v tomto případě ty spojene s položkou, na kterou bylo kliknuto - pohoda). Ale poté, co se vyvolá tento callback, tak potřebuju z té cílové callback funkce zavolat jinou funkci na stejném view modelu. A to nejde. Nejsem už v tom view modelu. Jak to teda udělám? Proč se mi v this vrací stejný objekt jako je parametr? Jede to jako nějaký deffered object, nebo jaké je řešení?
KOM --- 16:05:03 5.11.2014
RAPTORCZ: Pokusim se ti neco vyzobat, myslim ze mam nekde ulozeny takovy "boilerplate"...
RAPTORCZ --- 15:06:34 5.11.2014
KOM: Nemáš někde nějakou ukázku použití/článek o tom? RequireJS ani AMD atd. jsem nikdy nepoužíval. Potřebuju teď prostě jen do ViewModelu nějak nadefinovat, jakou si to má načíst šablonu a nechci ji mít ve stránce. Už jich je moc :-)