Angular.js and ASP.NET MVC 4

angularjs, asp.net-mvc-4, javascript, javascript-framework, knockout.js

Solution

Glad to see this questions was of interest to the community ;) Just for completeness here's what I ended up doing:

I did go with AngularJS and ASP.NET MVC 4 and was glad that I did. Although, Angular has a steep learning curve but its worth it because of the power of directives.

- We need two-way model data binding - On occassion I needed to set some initial values coming from the MVC controller. I used the ng-init attribute to accomplish this.

- We need the ability to test views - I followed the AngularJS docs for testing

- "Save Changes" functionality - I implemented this using a directive in Angular

- "Notifications" functionality - I implemented this using toastr.js and and directives (schweet)

- We need to "future proof" our application - I don't know Google's plans for AngularJS, but after working with AngularJS I can't see it going anywhere anytime soon and expected it to become more widely adopted :)

Problem

I have an ASP.NET MVC 4 project and I'm stuck on an architectural decision on which JavaScript framework or library to use Angular.js or Knock.js. I am currently leaning towards using Angular.js over Knockout.js, but don't want to find out midway during project development I made a mistake. Here is some background: - We need two-way model data binding - We need the ability to test views. I want to be able to do end to end unit testing. Also, we are using continuous integration. - "Save Changes" functionality. i.e. if a user makes changes on a page we need the ability to detect any changes and prompt the user to save their changes before they navigate away from the page - "Notifications" functionality. i.e. user will be logged on approximately 8 hours and will need to be notified and updated of changes made by other users (errors, data status changes and the like) - We need to "future proof" our application. Currently the business unit hasn't decided if we will need to support mobile devices, but I know it's just a matter of time. - Our team consists of developers with varying experience levels from very junior to senior developers. - Currently our models are complicated and may get even more so - We need to also consider RAD, code reuse, and maintainability I have read the excellent answer here and watched Scott Allen's interview about Angular here Since we are unable to change from our current ASP.NET MVC 4 architecture to use something on the server side like Web API I have some concerns in trying to implement Angular.js with MVC 4. Will this cause us to have two models one on the server and one on the client? I am not looking for a "which is better" discussion about Angular and Knockout because I think they both have their pros and cons. I am looking for actual code on implementing a JavaScript framework or library in an ASP.NET MVC 4 application. I need a solution that I can live with 2+ years from now :) Any ideas or suggestions? Maybe the answer is not Knock or Angular, but some other JavaScript framework?

Original source

Related problems