Konkrétní problémy při použití Knockout a Web API   zodpovězená otázka

.NET Tips

Zdravím všechny,

snažím se pomalu dostat do problematiky Knockout a Web API (tímto díky Tomáši Hercegovi za přednášky) a rád bych se zeptal na pár tipů k určitým věcem. Je pravda, že se dá něco i vygooglit, ale ne vždy jsem byl přesvědčen, že je to to pravé. Zároveň se omlouvám, že píšu vše do jednoho dotazu, ale tak nějak to patří k sobě. Snad.

1) Přepínání modelu mezi editačním a zobrazovacím módem

Řekněme, že mám složitější model (tím myslím, že to nejsou jen 2 property) a potřebuju přepínat stavy editovatelné/needitovatelné. Jde mi o to, abych nemusel procházet všechny controly v html a nastavovat u nich readonly/enabled property. Je nějaké doporučení/řešení, jak toto udělat nejelegantněji? Cílem je, aby formulář byl co do designu stejný, jen šlo položky editovat jen pokud je model v režimu "editovatelný".

2) Formátování hodnot na formuláři v Knockoutu

Lze nějak globálně řešit formátování hodnot přes Knockout model? Jde mi hlavně o datumy a oddělovače tisíců v číslech. Sice bych toto mohl asi globálně naformátovat ve Web API controlleru na Json formateru, ale to si nemyslím, že je to ono. Jak toto řešíte, případně přes jaké JS knihovny?

3) Knockout, kolekce, komba a výchozí hodnoty

Řekněme, že mám v modelu pole hodnot. Pro zjednodušení třeba osobu a seznam rolí. Potřebuji zobrazit info o osobě a na kombo nabindovat seznam rolí. Zároveň má osoba výchozí roli. To je v klidu. Ale potřebuji zároveň po načtení dat nastavit onu výchozí roli v kombu. Pro tuto mám v modelu určenou třeba nějakým ID role. Zjednodušeně - po načtení dat najdi v poli rolí tu s konkrétním ID, nastav ji jako zvolenou v kombu a zobraz detail role. Jak toto nejjednodušeji provedu a nabinduju? Zároveň samozřejmě ale potřebuji přepínáním v kombu zobrazovat detail zvolené role. Sice můžu vytvořit ko.observable na entitu role a tu nastavit jako value v kombu, ale jak to můžu spojit jen s ID, pomocí kterého nastavím tu zvolenou entitu? Mám si držet někde jen zvolené ID nebo celou entitu? Snad jsem to popsal trošku srozumitelně.

To asi pro začátek stačí. Díky za rady.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

1) Knockout má na tohle speciální binding

<input data-bind="enable: CurrentView() == 'edit'" ...

2) Formátování řeším tak, že na to mám vlastní binding handler (to, co se v data-bind píše před dvojtečku) - např. http://www.aaronkjackson.com/2012/04/for...

3) Asi nechápu, ale reagovat na změnu výběru v comboboxu lze přes subscribe:

var viewModel = function() {
   var self = this;
   ...
   self.SelecterUserId = ko.observable();
   ...
   self.SelectedUserId.subscribe(function (newValue) {
       // tato funkce se vyvolá, pokud se SelectedUserId změní
   });
};
nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback