Major Release
- Add
Batman.StateHistory
for pushState navigation support - View source html can be prefetched via
View.viewSourceCache.prefetch
- Major refactoring of view bindings into class based hierarchy
- Add
data-defineview
to allow view sources to be declared inline - Add Association support to Model via
Model.hasOne
,Model.hasMany
,Model.belongsTo
- Add smart AssociationProxy objects which support reloading
- Add support for loading associations with inline JSON
- Add support for
?
and!
in property names and keypaths - Store the current
params
on theBatman.currentApp
for introspection. - Add
ParamsReplacer
andParamsPusher
as smart objects which when set, update the global params, pushState or replaceState, and redirect. - Add
Hash::update
,Hash::replace
, andSet::update
- Add
Set::indexedByUnique
- Add
Batman.contains
for membership testing and accompanyinghas
filter - Add support for JSONP requests in
batman.solo
- Add
final
property support to optimize observing properties which will never change - Add
Batman.version
- Add support for customizable render targets in
Controller::render
Bugfixes:
Hash::clear
now fires observers for cleared keys- Properties are no longer retained if they aren't being observed to reduce memory usage
IteratorBinding
can have its sibling node changed without erroring- Filter arguments can be keypaths which start on or descend through POJOs
data-context
now correctly only takes effect for its child nodesdata-event-*
has a catchall to attach event listeners for any event- Made
Batman.data
work in IE7 - Made
Batman.Model
properly inherit storage adapters - Made
data-bind-style
bindings camelize keys - Fixed major memory leaks around Bindings never being garbage collected via Batman.data
- Made
Renderer::stop
work if called before the renderer started - Stop mixing
Observable
intowindow
to error earlier when accidental sets and gets are done onwindow
- Fix memory leaks around View instances never being garbage collected
- Fix memory leaks around IteratorBinding instances growing with time
- Fix memory leaks around SetIndex observing all items forever
- Fix sets on POJOs from keypaths
- Fix
batman.solo
to properly encode GET params - Fix
Model::toJSON
andModel::fromJSON
to deal with falsey values like any other - Remove ability for
View
instances to have eithercontext
orcontexts
, and unify oncontext
. - Fix error thrown if the
main
yield didn't exist - Made the extras files requirable in node
- Fix an invalid data bug when receiving large responses using
batman.node
- Fix JSON de-serialization when receiving collection responses using
batman.node
- Fix support for non numeric model IDs
- Fix
data-partial
anddata-yield
to stop introducing superfluous divs.
Major Maintenance Release
- pagination through
Batman.Paginator
andBatman.ModelPaginator
- nested resources routes
- unknown params passed to
urlFor
will be appended to the query string App.layout
accepts a class name which will automatically instantiate that class upon loadController::render
accepts aninto
option, which lets you render into a yield other thanmain
yield/contentFor/replace
are now animatable throughshow/hide
interpolate
filter- pleasant reminders if you seem to have forgotten some encoders
- removing nodes will destroy all their bindings
Batman.setImmediate
for fast stack popping
Bugfixes:
App.ready
is now a oneShot eventApp.controller/model/view
are now only available in developmentdata-foreach
(through Iterator) is now entirely deferred- better support for
input type='file'
- sets within gets don't register sources
- fixes several memory leaks
- better view html caching
Major Maintenance Release
- added extras folder
- start of i18n features
- overhauled event system, which properties are now clients of (requires code changes)
Property::isolate
andProperty::expose
will prevent a property from firing dependent observersdata-contentFor
will now append its content to itsdata-yield
data-replace
will replace the content of itsdata-yield
- descending SetSorts
Batman.App
fires aloaded
event when all dependencies are loadedBatman.App.currentRoute
property for observing- allow
controller#action
syntax indata-route
Bugfixes:
- use persistent tree structure for RenderContext
- keep track of bindings and listeners with Batman.data
- correctly free bindings and listeners
- coerce string IDs into integers when possible in models
- accessors are memoized
- suppress developer warnings in tests
- don't match non
data-*
attributes - fix
data-bind-style
Maintenance Release
- added
Batman.Enumerable
- added support for multi-select boxes
- added batman.rails.coffee, a new adapter for use within Rails
- added developer namespace for easy debugging (it gets stripped out in building)
- one way bindings have been changed to
data-source
anddata-target
to avoid ambiguity - added
data-bind
support forinput type='file'
- added
data-event-doubleclick
- added
length
filter - added
trim
helper Controller.resources
creates anew
route instead ofdestroy
Model.find
will always return the shared record instance. you can then bind to this and when the data comes in from the storage adapter, your instance will be updated- added
Model::findOrCreate
- added
Model::updateAttributes
- allow storage adapters to specific their namespace with
storageKey
- storage adapter filter callbacks take errors
- added
App.ready
event that fires once the layout is ready in the DOM - normalize
status
/statusCode
inBatman.Request
- hashes now have meta objects to non-obtrusively bind metadata like
length
- the
property
keyword is no longer reserved
Bugfixes:
Controller.afterFilter
was missing- hash history uses
Batman.DOM.addEventListener
- routes such as
data-route="Model/new"
will route correctly - fix
Batman.DOM.removeEventListener
so it doesn't depend on document - fire
rendered
event after all children have been rendered - model methods can be used as event handlers
- animation methods called with node as context
data-event
works within the binding system- simpler model identity mapper
SortableSet::clear
invalidates sort indices- IE: doesn't have Function.prototype.name (move things into $functionName)
- IE: doesn't support
isSameNode
- IE: doesn't support
removeEventListener
(usedetachEvent
instead) - IE: fix $typeOf for undefined objects
- IE: event dispatching fixes
- IE: include json2.js in the tests
Major Maintenance Release
- added
Batman.Accessible
, a simple object wrapper around an accessor - added
Batman.SetSort
for getting a sorted version of a set which automatically watches the source set and propagates changes - added
Batman.SetIndex
for getting a filtered version of a set which automatically watches the source set and propagates changes - added after filters to
Batman.Controller
- moved
Batman.Model
attributes into an attributes hash to avoid namespace collisions with model state. - added
Batman.data
for safely attaching JS objects to DOM nodes - added support for many
[]
style gets in filters - added asymmetric bindings (
data-read
anddata-write
) - ensured Batman objects are instantiated using
new
(#65) - added support for radio button
value
bindings (#81) - added
Batman.Encoders
to store built in encoders, and addedBatman.Encoders.RailsDate
- added
status
toBatman.Request
, normalizing XHR object'sstatus
/statusCode
- added proper parameter serialization to the
batman.solo
platform adapter
Bugfixes:
-
fixed
batman server
options (batman -b server
works as expected) -
fixed binding to
submit
events on forms (#6) -
fixed Renderer's ready events to fire when all child renderers have returned (#13)
-
fixed textarea value bindings to work as expected (#20)
-
made bindings to undefined populate their nodes with an empty string instead of "undefined" (#21)
-
made
data-foreach
,data-formfor
,data-context
, anddata-mixin
all work as expected when the collection/object being bound changes (#22) -
fixed
LocalStorage
's primaryKey generation (#27) -
made
Request
send the proper content type (#35) -
made the current application always appear on the context stack (#46, #48)
-
made
@render false
prevent render on a controller action (#50) -
made
data-foreach
work with cleared sets and many additions/removals (#52, #56, #67) -
made empty bindings work (#54)
-
made
Set
s not leak attributes when given items to add in the constructor (#66) -
prevented
@redirect
from entering a redirect loop when usinghashchange
events (#70) -
made
showif
andhideif
bindings play nice with inline elements (#71) -
made jQuery record serialization work with
RestStorage
(#80) -
made
Model.get('all')
implicitly load (#85) -
fixed binding to
state
on models (#95) -
made
Hash
accept keys containing "." (#98)
Maintenance Release
batman server
is nowbatman serve
(or stillbatman s
)- Configure the hostname for the server with -h
- CI support with Travis
Bugfixes:
- RestStorage uses correct HTTP methods and contentType
- Some improvements for
batman new
, more coming in 0.5.2 - DOM manipulation performance improvement
Known issues:
- Apps generated with
batman new
are somewhat broken - Generators allow too many non-alphanumeric characters
Initial Release
Known issues:
- Inflector support is naive
- Code is too big
- Performance hasn't been investigated
- Filters don't support async results
- Model error handling is callback based
Missing features:
- Model assosciations
- Model scopes
- Model pagination
- Push server
- Documentation