Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari or Firefox browser.

KnockoutJS

a kaj je to?

Neven Falica

@elkarrde


Mentat Labs d.o.o.

Što je KnockoutJS?

Front-end Model–View–View-Model library


Osnovni fičri


→ Vanilla JS™ ;)

Model–View–View-Model?

Model

Podaci, objekti business domene

View

user-interface, HTML

View-Model

transformativni model

Observables?

“Observed” a.k.k praćene varijable

Primjer

Huzzah!

Bindings?

Linkanje modela s viewom data-bind atributom

<element data-bind="binding"/>

Primjeri!

Primjer 1

Model

var example01 = {
  firstName: '',
  lastName:  ''
}

View

Hello <span data-bind="text: firstName"></span>.

JS

ko.applyBindings(example01);

HTML

Hello .

Primjer 2

Model

var example02 = {
  firstName: ko.observable(''),
  lastName:  ko.observable('')
}

View

Hello <span data-bind="text: firstName"></span>.

JS

ko.applyBindings(example02);

HTML

Hello .

Primjer 3…

Model

var example03 = {
  crew: ko.observableArray([]),
}

View

<tbody data-bind="visible: crew.length < 1">
  <tr><td colspan="2"><em>No crew.</em></td></tr>
</tbody>
<tbody data-bind="foreach: crew, visible: crew.length > 0">
  <tr>
    <td data-bind="text: firstName"></td>
    <td data-bind="text: lastName"></td>
  </tr>
</tbody>

…Primjer 3…

JS

ko.applyBindings(example03);

JSON

[{
    "firstName": "David",
    "lastName":  "Bowman"
  },
  {
    "firstName": "Frank",
    "lastName":  "Poole"
}]

…Primjer 3

HTML

Members:

First name Last name
No crew.

Primjer 4

Model

var example04 = {
  firstName: ko.observable(''),
  lastName:  ko.observable(''),
  fullName:  function(){return this.firstName + ' ' + this.lastName})
}

View

Hello <span data-bind="text: fullName"></span>.

HTML

Your name is: “”.

Bindings, prvi dio

Izgled

Visibility

Model

var example05 = {
  query: ko.observable('')
}

View

<span data-bind="visible: query().length < 1">Empty!</span>"

HTML

Empty!

Text

Model

var example06 = {
  entry: ko.observable('')
}

View

<span data-bind="text: entry"></span>"

HTML

HTML

Model

var example07 = {
  entry: ko.observable('')
}

View

<span data-bind="html: entry"></span>"

HTML

CSS

Model

var example08 = {
  entry: ko.observable('')
}

View

<span data-bind="css: {'glyphicon-ok': entry().length > 2, 'glyphicon-remove': entry().length < 3}"></span>"

HTML

Style

Model

var example09 = {
  entry: ko.observable('')
}

View

<span data-bind="style: {color: entry()}"></span>"

HTML

Color!

Attr

Model

var example10 = {
  entry: ko.observable('')
}

View

<button data-bind="attr: {disabled: entry() === 'off'}">Do it</button>"

HTML

Bidningsi, drugi dio

Forme

Bidningsi, treći dio

Tok (as in “flow”)

Virtualni element

Templating fičr


<!-- ko foreach: posts -->
<!-- /ko -->

That's all, folks!