3 ms·
For point one, it is specified in the model. @doSomething would invoke the model's doSomething function. The template just names it. As to point two, observabl
by Yahivin 12y ago
For point one, it is specified in the model. @doSomething would invoke the model's doSomething function. The template just names it.
As to point two, observable provides a bi-directional binding so that changes to the value are reflected in the DOM and changes in the DOM are reflected in the model.
The observable interface is essentially a jQuery style getter/setter method that allows for observers to be notified of changes.
- klibertp 12y agoWhen is the DOM updated? Are the changes performed as soon as they are observed or are they queued? Does Hamlet implement some kind of "virtual DOM" for diffing or does it sync DOM and model directly? Looks very nice, just this weekend I looked at some frontend frameworks, including Vue, Mithrill, Ractive and React and found some issues with them all. Hamlet would fit my use case very well, I think. One thing I'd like is more technical details on the main page - not how it "looks like" compared to other frameworks, but how it does its thing (compared to other frameworks).
- rich_harris 12y agoThanks for trying Ractive (I'm on the core team). If you don't mind, I'd be interested in knowing what issues you came up against with those frameworks that you listed?
- Yahivin 12y agoThe current implementation performs changes immediately. There is no virtual DOM, as soon as a change occurs the model is update and vice versa. The Observable component invokes the callback to all listeners immediately when its value is changed. I find this makes testing and debugging somewhat easier than async callbacks or nextTick.
- bradgessler 12y agoHow does observable wrap values? I see a few things: list = Observable [] list.push 'blah' and isOrange = Observable false isOrange = true // This obviously doesn't work this way... Do you poll the value? Or do you check the type of the value and wrap/proxy methods that would normally change the value?
- Yahivin 12y agoWhen Observable is declared with a type (especially an array) it sets up some wrapped methods to simplify working with it. The wrappers also set up automatic dependency resolution so you can do cool things like: list = Observable [] reversed = Observable -> list.map reverse list.push 'blah' reversed() # => ['halb'] There's no polling, the observable notifies all observers immediately when the value changes.
- bradgessler 12y agoWhat about simple types, like the `false` value example above? Is there a `set` and `get` method?
- mdiebolt 12y agoYou'd use a jQuery style setter. isOrange(false)
- peterhunt 12y agoWhat issues did you find with React?