Repository - API - Source
Support for data-bound keypaths are formatter arguments.
{ item.price | lte user.balance }
Support for primitives in binding declarations. This includes strings, numbers, booleans, null and undefined.
{ item.updated | date 'MMM DD, YYY' }
Primitives are also supported as the binding target.
{ 'i18n.errors.' | append error | translate }
Support for multiple binder arguments (wildcard matches). See #383.
The Observer
class has been abstracted out into a new lib as a dependency. See Sightglass.
The built-in value
binder now listens on the input
event instead of change
, so updates will propogate immediately instead of on blur.
There is no more rivets.config
object. All of the previous configuration options are defined on the module directly.
If a template includes <script>
elements, they will now be ignored when the template is parsed.
Make sure you include the sightglass lib in your project. Just include sightglass.js
before rivets.js
. Alternatively you can just include rivets.bundled.min.js
once (contains both libraries).
If you have defined any custom adapters, they will need to be updated from the old property names to the new property names.
adapter.subscribe
is now adapter.observe
.adapter.unsubscribe
is now adapter.unobserve
.adapter.read
is now adapter.get
.adapter.publish
is now adapter.set
.Change all of your existing formatter arguments to be wrapped in quotes. This is because arguments are evaluated as keypaths by default (unless they are wrapped in quotes).
For example, if you were previously doing the following:
<p>{ item.enabled | switch green red }</p>
You will need to change it to:
<p>{ item.enabled | switch 'green' 'red' }</p>
Note that if your keypath argument was a number, true
, false
, null
or undefined
, then you can leave them without quotes, but they will be passed to the formatter as the actual primitive value instead of a string.
If you ever set properties directly on the rivets.config
object, you will need to change those to the rivets
object itself.
For example, if you were previously doing the following:
rivets.config.templateDelimiters = ['{{', '}}']
You will need to change it to:
rivets.templateDelimiters = ['{{', '}}']
Note that if you were only using rivets.configure({})
then no changes are needed (rivets.configure
functions the same as before).
.
adapter using ES5 natives (getters and setters).user.address:zip
).prefix
configuration is now an absolute prefix (you need to include "data" in the prefix if you want to use data attributes). Defaults to rv
. Make sure to change all existing attribute names to rv-[binder]
or update your prefix
configuration option.array[3] = 'world'
for example).length
property. Currently you need to use a formatter to access the array's length
property (list.items | length
).