rpbertp13 / kiwi
- Source
- Commits
- Network (5)
- Issues (0)
- Downloads (0)
- Wiki (1)
- Graphs
-
Branch:
master
| name | age | message | |
|---|---|---|---|
| |
LICENSE | Tue Nov 10 14:19:44 -0800 2009 | |
| |
README.rdoc | Tue Nov 17 00:32:21 -0800 2009 | |
| |
docs/ | Wed Jul 15 08:26:41 -0700 2009 | |
| |
lib/ | Tue Nov 17 17:01:36 -0800 2009 |
Kiwi
Kiwi likes HTTP. Kiwi likes REST. Kiwi doesn’t like it when you have to do tedious things like writing down url’s to get data from your server.
Models map to Resources
We can define a couple of models
$m('Post', {
resource: 'posts',
has: {'comments':'Comment'}
})
$m('Comment', {resource: 'comments'})
So now we can say, in a controller
$m.Post.find('all', this.publish)
or
$m.Post.find(1).comments.find('all', this.publish)
or perhaps
$m.Post.find(1).comments.find(12).destroy(this.publish)
The http requests that get fired are, respectively:
http://domain.com/posts (GET) http://domain.com/posts/1/comments (GET) http://domain.com/posts/1/comments/12 (DELETE)
HTTP error codes rule
If our server returns a different status code for each server error (or error class), we can easily react differently in the front end:
In a view:
$v('CommentList', {
listeners: {
'.more click': {action: 'Comments.get', on_error: 'errors'}
},
errors: {
404: function(){
alert("Sorry, not found!")
},
403: function(status_code, message){
alert(message)
}
}
})
We can also define a catch all error handler in case none of them are defined in our view:
$k.options.global_error_handler.base = function(){
alert("You got some random error!")
}
Concise and flexible parameter passing
In a controller
$m.Post.create(this.params, this.publish)
This will automatically serialize the parameters in the form of the calling view and send it over the wire. Currently this.params assumes that you have only one form per view.
If you need to set a prefix to your parameters, simply set:
this.options.param_prefix = 'post'
before calling the model.
You can also set as the parameter argument a jQuery object representing a form, or a function that returns either jQuery-ized form, an arbitrary object you want to serialize, or a string.
Please fork if you like this
Kiwi is good for this and other things. It can be improved in many ways, and I would love some help :)
Check out the official docs at:
