我喜欢Durandal和KO框架,我发现它们是一种更优雅,更简单的解决方案。
然而,与谷歌背后的角色有更好的营销成功,因此有更多的自定义选择。
现在在离子的KO端有什么等效的东西吗?或者战争已经赢了,我只需要继续前进。
答案 0 :(得分:10)
TL; DR 不知道KO / Durandal的任何替代方案,但走自己的路可能是更好的选择。
我对Ionic的理解是它是核心Cordova混合框架的包装。正如您所提到的,它的构思是在任何地方使用AngularJS。除了作为包装器,它还提供了额外的插件。
所以基本上如果你愿意,它只是NG开发人员的简化。我不想说它做得不好,但实际上你可以用自己的Knockout& amp;杜兰达尔也是如此。到目前为止,我已经使用Cordova + Durandal构建了一些演示应用程序,并且不得不说它越来越好,特别是Cordova提供的节点cli工具可以加速开发。我认为这样做的最大优势在于您可以完全自由选择框架和库。
答案 1 :(得分:2)
我相信你可以重用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,您有compose
和视图:
<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', isActive: ko.observable(false)},
...
],
,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非常类似于路由和组合)。