Venant d'asp.net MVC 3. Dans MVC4, ils ont introduit les WebAPI. Ce serait bien de pouvoir faire tout le code de vue/route en javascript et de simplement compter sur MVC pour l'API. Heck, c'est vraiment cool que les webapi puissent être exécutés indépendamment d'IIS!
Cela étant dit:
Existe-t-il des cadres de page pouvant tirer parti de KnockoutJS qui sont similaires à ma maquette ci-dessous:
Framework.RegisterRoutes(..,mainViewModel);//sets the CurrentViewModel?
Chaque route étant un fichier séparé d'un viewModel et une vue à injecter dans la vue principale
var mainviewModel= function(){
var self = this;
self.CurrentViewModel = ko.observable();
...
return self;
}
<div id="mainPageContent" data-bind:'html:CurrentViewModel.Render'>
</div>
Je sais que beaucoup de ceci peut être réalisé par soi-même, mais je ne sais pas comment réaliser les routes d'enregistrement/chargement de fichiers séparés
J'ai l'impression que les principales forces de knockoutjs sont la capacité de ne pas s'immiscer dans la façon dont vous codez js (c'est-à-dire de construire un objet/framework comme vous le souhaitez tant que les objets en interaction sont observables)
Sammy.js est une excellente bibliothèque JavaScript de routage léger. Vous pouvez faire des choses comme celle-ci pour router une fois utilisé en association avec Knockout (à partir du site Web des didacticiels ou KnockoutJS):
$.sammy(function() {
this.get('#:folder', function() {
self.chosenFolderId(this.params.folder);
self.chosenMailData(null);
$.get("/mail", { folder: this.params.folder }, self.chosenFolderData);
});
this.get('#:folder/:mailId', function() {
self.chosenFolderId(this.params.folder);
self.chosenFolderData(null);
$.get("/mail", { mailId: this.params.mailId }, self.chosenMailData);
});
this.get('', function() {
this.app.runRoute('get', '#Inbox');
});
}).run();
Une autre option est d'utiliser SproutCore, mais c'est bien plus que nav, donc je ne recommande pas cette route à moins que vous ne vouliez tout SproutCore. Il existe de nombreuses autres bibliothèques, mais j'aime Sammy.js jusqu'à présent en raison de sa légèreté.
Je voudrais jeter mon chapeau dans la course aux futurs Googlers/SOers avec ko-component-router .
L'API IMO est beaucoup plus succincte que Pager.js, et ayant été conçue explicitement pour KO, elle a intégré des goodies tels que des paramètres de route et de chaîne de requête observables.
Mieux encore, il est activement maintenu et le restera dans un avenir prévisible.
Avis de non-responsabilité [~ # ~] [~ # ~] : Je suis le développeur de ce package.
Question plus ancienne, mais pour référence, Durandal est un excellent cadre SPA pour Knockout:
Je viens d'ouvrir le mini-framework SPA que j'ai mis en place, Knockout étant le composant principal.
knockout-spa Un mini (mais à part entière) framework SPA construit au-dessus de Knockout, Require, Director, Sugar. https://github.com/onlyurei/knockout-spa
Démo en direct: http://knockout-spa.mybluemix.net