First Open Source Project – Knockout Creator
Well it looks like this blog is all about firsts at the moment. Today I created my first open source project, Knockout Creator. This is a library that supports Knockout.Js.
What is Knockout.js?
Knockout.js can be found at http://knockoutjs.com/ . Knockout is a Javascript library that brings a MVC approach to Javascript. The idea is that you create a view model in javascript. You can then change the UI dependent on the view model. Its probably easier to understand if you look at a live demo http://knockoutjs.com/examples/twitter.html.
So whats your project do?
The problem I found with knockout is, you end up creating the view model in Javascript and then recreate the same model in c# when you want top pass the view model back to c# for saving or lookup. I hate duplicate code!! So Knockout Creator will generate the Javascript view model for you so the view model exists in just one place.
Usage
Your View Model
namespace knockoutExample
{
public class Restaurant : Knockout.ViewModel
{
public int RestaurantId { get; set; }
public string Name { get; set; }
}
}
Setting up your controller
public string KnockOutJs() {
restViewModel = new Restaurant();
koCreator = new Knockout.KoCreator()
//Set your controller name
koCreator.PageName = "Home";
//Add your viewmodel Restaurant is the name of the model we want in javascript
koCreator.AddViewModel("Restaurant", restViewModel.GetType());
//Add a javascript function subscription. This will call the javascript function test() everytime the name is changed
koCreator.AddJsSubscription("Name","test");
//This will return the javascript, we pass in the controller so that Knockout Creator can bind subscriptions
return koCreator.GenerateJs(this);
}
Creating a method to be called using AJAX
//Add a custom attribute specifying the variable that when changed will trigger this via AJAX
[KoMethod("RestaurantId")]
//The method accepts one attribute, our viewmodel. This will be passed back using AJAX
public JsonResult GetRestaurantById(knockoutExample.Restaurant viewModel) {
//get the restaurantId that has been posted
int restaurantId = viewModel.RestaurantId;
//Load the record from the db
Restaurant restaurant = _restaurantRepository.Load(restaurantId);
// set the viewmodel name
viewModel.Name = restaurant.Name
//return the viewmodel back to the browser
return Json(viewModel);
}
Setting up your view
What gets put in your browser?
So what now?
Every time the RestaurantId is updated a call will be made to the server and will run GetRestaurantById. GetRestaurantId will load the Restaurant from the database and will return the view model back.
How can I get the source?
Get over to github https://github.com/afinzel/KnockoutCreator
Leave a Reply
Search
| M | T | W | T | F | S | S |
|---|---|---|---|---|---|---|
| « Jan | ||||||
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |