我喜欢Durandal和KO框架,我发现它们是一个更优雅,更简单的解决方案.
然而,与谷歌背后的Angular享有更好的营销成功,因此更多的自定义选择.
现在在离子的KO端有一些等价的东西吗?或者战争已经赢了,我只需要继续前进.
我相信你可以重用
Ionic CSS(就像你使用Bootstrap一样)来获得适合移动设备的样式,然后连接一些KO绑定以使其响应用户的操作.
一个简单的例子:想象你想制作一个标签界面(我从the docs开始加标)
- <div class="tabs-striped tabs-top tabs-background-positive tabs-color-light">
- <div class="tabs">
- <a class="tab-item active" href="#">
- <i class="icon ion-home"></i>
- Test
- </a>
- <a class="tab-item" href="#">
- <i class="icon ion-star"></i>
- Favorites
- </a>
- <a class="tab-item" href="#">
- <i class="icon ion-gear-a"></i>
- Settings
- </a>
- </div>
- </div>
使用离子,你必须利用ion-tabs,但是使用durandal / KO你可以撰写和观看:
- <div class="tabs-striped tabs-top tabs-background-positive tabs-color-light" data-bind="delegatedHandler: 'click'">
- <div class="tabs" data-bind="foreach: tabs">
- <a class="tab-item" href="#" data-bind="delegatedClick: $parent.setView.bind($parent),css: {active: isActive}">
- <i class="icon" data-bind="css: icon"></i>
- <span data-bind="text: title"></span>
- </a>
- </div>
- </div>
- <div data-bind="compose: {view: activeView,cacheViews: true}"></div>
然后在你的虚拟机中添加一个顶部:
- return {
- tabs: [
- {title:'Test',view: 'test.html',icon: 'ion-home',isActive: ko.observable(false)},{title:'Favourites',view: 'favs.html',icon: 'ion-star',...
- ],activeView: ko.observable(),setView: function(view) {
- this.activeView(view.view || view);
- this.tabs.forEach(function(v){
- v.isActive(v.view === viewName);
- });
- }
- }
这只是为了让您了解可能的方法.毕竟,角度和KO非常相似……大多数离子的JS组件已经在durandal中实现(例如navigation非常类似于路由和组合).