title: Angular.js and ASP.NET MVC 4
body: <p>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.</p>
  
  <p>Here is some background: </p>
  
  <ul>
  <li>We need two-way model data binding</li>
  <li>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. </li>
  <li>"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</li>
  <li>"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)</li>
  <li>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.</li>
  <li>Our team consists of developers with varying experience levels from very junior to senior developers.</li>
  <li>Currently our models are complicated and may get even more so</li>
  <li>We need to also consider RAD, code reuse, and maintainability</li>
  </ul>
  
  <p>I have read the excellent answer <a href="https://stackoverflow.com/questions/14994391/how-do-i-think-in-angularjs-emberjs-or-other-client-mvc-frameworks-if-i-have">here</a> and watched Scott Allen's interview about Angular <a href="http://www.youtube.com/watch?v=D8vc-cTzvCk" rel="nofollow noreferrer">here</a></p>
  
  <p>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 <a href="https://stackoverflow.com/questions/17262309/razor-templates-views-and-angular-js">concerns</a> 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? </p>
  
  <p>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 :)</p>
  
  <p>Any ideas or suggestions? Maybe the answer is not Knock or Angular, but some other JavaScript framework?</p>