mercury
Version:
A truly modular frontend framework
105 lines (81 loc) • 2.71 kB
Markdown
Auto generated from [observ-array](https://github.com/Raynos/observ-array) package (version 3.1.0).
<!--
[![build status][1]][2]
[![NPM version][3]][4]
[![Coverage Status][5]][6]
[![gemnasium Dependency Status][7]][8]
[![Davis Dependency status][9]][10]
-->
<!-- [![browser support][11]][12] -->
An array containing observable values
An `ObservArray` is an observable version of an array, every
mutation of the array or mutation of an observable element in
the array will cause the `ObservArray` to emit a new changed
plain javascript array.
```js
var ObservArray = require("observ-array")
var ObservStruct = require("observ-struct")
var Observ = require("observ")
var uuid = require("uuid")
function createTodo(title) {
return ObservStruct({
id: uuid(),
title: Observ(title || ""),
completed: Observ(false)
})
}
var state = ObservStruct({
todos: ObservArray([
createTodo("some todo"),
createTodo("some other todo")
])
})
state(function (currState) {
// currState.todos is a plain javascript todo
// currState.todos[0] is a plain javascript value
currState.todos.forEach(function (todo, index) {
console.log("todo", todo.title, index)
})
})
state.todos.get(0).title.set("some new title")
state.todos.push(createTodo("another todo"))
```
Batch changes together with transactions.
```js
var array = ObservArray([ Observ("foo"), Observ("bar") ])
var removeListener = array(handleChange)
array.transaction(function(rawList) {
rawList.push(Observ("foobar"))
rawList.splice(1, 1, Observ("baz"), Observ("bazbar"))
rawList.unshift(Observ("foobaz"))
rawList[6] = Observ("foobarbaz")
})
function handleChange(value) {
// this will only be called once
// changes are batched into a single diff
value._diff //= [ [1,1,"baz","bazbar","foobar", , "foobarbaz"],
// [0,0,"foobaz"] ]
}
```
`npm install observ-array`
- Raynos
- [Matt McKegg][13]
[]: https://secure.travis-ci.org/Raynos/observ-array.png
[]: https://travis-ci.org/Raynos/observ-array
[]: https://badge.fury.io/js/observ-array.png
[]: https://badge.fury.io/js/observ-array
[]: https://coveralls.io/repos/Raynos/observ-array/badge.png
[]: https://coveralls.io/r/Raynos/observ-array
[]: https://gemnasium.com/Raynos/observ-array.png
[]: https://gemnasium.com/Raynos/observ-array
[]: https://david-dm.org/Raynos/observ-array.png
[]: https://david-dm.org/Raynos/observ-array
[]: https://ci.testling.com/Raynos/observ-array.png
[]: https://ci.testling.com/Raynos/observ-array
[]: https://github.com/mmckegg