Knockback.js API and Usage Examples

kb.utils

Library for general-purpose utilities

Knockback.utils.release(obj, [keys_only])

Releases any type of view model or observable using the conventions of release(), destroy(), dispose()
view_model = kb.viewModel(model)
kb.utils.release(view_model); view_model = null

todos = kb.collectionObservable(collection)
kb.utils.release(todos); todos = null
var view_model = kb.viewModel(model);
kb.utils.release(view_model); view_model = null;

var todos = kb.collectionObservable(collection);
kb.utils.release(todos); todos = null;

Knockback.utils.wrappedModel(view_model {, model}) dual purpose

Used to get/set a Model on a ViewModel. During a get, if the ViewModel has no Model, it returns the ViewModel itself (mainly to simplify collection sorting)

Parameters
  1. view_model{ object | kb.ViewModel }: the ViewModel that owns the Model
  2. model:{ object | kb.ViewModel }: optional the Model to set

view_model = kb.viewModel(model)

same_model = kb.utils.wrappedModel(view_model)
var view_model = kb.viewModel(model);

var same_model = kb.utils.wrappedModel(view_model);

Knockback.utils.setToDefault(obj)

Used to return all of the nested observables to their default values (if they exist)

Parameters
  1. obj{ object | Knockback observable with setToDefault() }: the target for reset

model = new Backbone.Model({name: 'Bob'})
view_model =
  wrapped_name: kb.defaultWrapper(kb.observable(model, 'name'), "(no name)')
# view_model.wrapped name: Bob

kb.utils.setToDefault(view_model)
# view_model.wrapped name: (no name)
var model = new Backbone.Model({name: 'Bob'});
var view_model = {
  wrapped_name: kb.defaultWrapper(kb.observable(model, 'name'), "(no name)')
};
// view_model.wrapped name: Bob

kb.utils.setToDefault(view_model);
// view_model.wrapped name: (no name)

kb.utils.observableInstanceOf(observable, class)

Checks the class type of the underlying class on a Knockback observable

Please note:classes start with a capital letter (eg. kb.CollectionObservable) whereas factory methods start with a lower case letter (eg. kb.collectionObservable)

todos = new kb.CollectionObservable(new Backbone.Collection([{name: 'name1'}, {name: 'name2'}]))

kb.utils.observableInstanceOf(todos, kb.CollectionObservable) # true
kb.utils.observableInstanceOf(todos, kb.collectionObservable) # false (factory function not class!)
var todos = new kb.CollectionObservable(new Backbone.Collection([{name: 'name1'}, {name: 'name2'}]))'

kb.utils.observableInstanceOf(todos, kb.CollectionObservable); // true
kb.utils.observableInstanceOf(todos, kb.collectionObservable); // false (factory function not class!)

wrappedObservable(instance {, observable})

Used to get/set a observable an owning instance. Mainly used as a helper so you can return a ko.observable function instead of an instance when creating a new Knockback or Knockback-derived instance.

Parameters
  1. instance{ any Knockout observable being used by Knockback }:
  2. observable:{ a Knockback or Knockout-derived class }: optional

class ShortDateLocalizer extends kb.LocalizedObservable
  constructor: (value, options, view_model) ->
    super; return kb.utils.wrappedObservable(this)
    
var ShortDateLocalizer = kb.LocalizedObservable.extend({
  constructor: function(value, options, view_model) {
    kb.LocalizedObservable.prototype.constructor.apply(this, arguments);
    return kb.utils.wrappedObservable(this);
  }
});