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.
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)
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!") }
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: