来自asp.net MVC 3.在MVC4中,他们介绍了WebAPI。能够在javascript中完成所有视图/路由代码并且只依赖于MVC for API会很高兴。非常酷,webapi可以独立于IIS运行!
话虽如此:
是否有任何页面框架可以利用KnockoutJS,它类似于我的模型:
Framework.RegisterRoutes(..,mainViewModel);//sets the CurrentViewModel?
每个路由都是viewModel的单独文件,以及要注入主视图的视图
var mainviewModel= function(){
var self = this;
self.CurrentViewModel = ko.observable();
...
return self;
}
<div id="mainPageContent" data-bind:'html:CurrentViewModel.Render'>
</div>
我知道很多这可以通过self实现,但不确定如何实现寄存器路由/加载单独的文件
我觉得knockoutjs的主要优势是能够不干涉你编码js的方式(即只要可以观察到相互作用的对象,就可以按照你想要的方式构建一个对象/框架)
答案 0 :(得分:45)
答案 1 :(得分:20)
Sammy.js是一个出色的轻量级路由JavaScript库。你可以做这样的事情来与Knockout一起使用时进行路由(来自教程网站或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();
另一个选择是使用SproutCore,但它远远超过nav,所以除非你想要所有的SproutCore,否则我不推荐这条路线。还有很多其他的库,但到目前为止我喜欢Sammy.js,因为它的重量很轻。
答案 2 :(得分:8)
我想通过ko-component-router向未来的Google员工/ SOers投降。
IMO API比Pager.js简洁得多,并且已经为KO明确设计,它内置了可观察路线和物流等物品。查询字符串参数。
最重要的是,它会得到积极维护,并且在可预见的未来仍将如此。
免责声明:我是此套餐的开发者。
答案 3 :(得分:3)
答案 4 :(得分:2)
较早的问题,但作为参考,Durandal是Knockout的优秀SPA框架:
答案 5 :(得分:1)
我只是开源了我将Knockout作为主要组件放在一起的迷你SPA框架。
<强>敲除的水疗强> 一个迷你(但功能齐全的)SPA框架,建立在Knockout,Require,Director,Sugar之上。 https://github.com/onlyurei/knockout-spa
现场演示: http://knockout-spa.mybluemix.net