Extensões Kendo CSS Binding

Eu reuni algumas extensões para Kendo Mobile MVVM, que
permitem simplificar a tarefa de representar estados de modelo usando
classes CSS .

cssToggle

Alternar entre duas classes css com base na veracidade
do valor do modelo

Uso:

<div data-bind="cssToggle: truthyProperty" 
data-enabled-css="on-class"
data-disabled-css="off-class"></div>

Código:

kendo.data.binders.cssToggle = kendo.data.Binder.extend({

init
: function(element, bindings, options) {

kendo
.data.Binder.fn.
init
.call(
this, element, bindings, options
);

var target = $(element);
this.enabledCss = target.data("enabledCss");
this.disabledCss = target.data("disabledCss");
},

refresh
: function() {
if ( this.bindings.cssToggle.get() ) {
$
( this.element ).addClass( this.enabledCss );
$
( this.element ).removeClass( this.disabledCss );
} else{
$
( this.element ).addClass( this.disabledCss );
$
( this.element ).removeClass( this.enabledCss );
}
}

});

cssState

Selecione uma classe css com base no limite do valor do estado. Você fornece uma lista
de estados com nomes de classes css correspondentes; consulte o uso abaixo.

Isso é preferível ao uso do integrado data-bind="style: property",
pois esse método permite que a associação states / css seja declarada na
visualização.

Uso:

<div data-bind="cssState: switch"
data-css-states="stop:red, go:green, slowdown:amber">

Você pode formatar os espaços em branco na lista de estados css como quiser; os
espaços em branco serão corrigidos pelo pré-analisador, por exemplo

<div data-bind="cssState: switch"
data-css-states="
stop : red,

go : green,

slowdown : amber "
>

As chaves de estado numéricas também são válidas:

<div data-bind="cssState: switch"
data-css-states="0:red, 1:green, 2:go">

Código:

kendo.data.binders.cssState = kendo.data.Binder.extend({

init
: function(element, bindings, options) {

kendo
.data.Binder.fn.
init
.call(
this, element, bindings, options
);

var target = $(element);

// convert the data-css-states
// string to JSON and parse it for use
// when refresh happens.

statePairs
= target.data.cssStates.split(",");
ar
= [];
for(var e in statePairs){
var pair = statePairs[a].split(":");
ar
.push(
kendo
.format(""{0}"":""{1}""""