使用状态机保持我的UI简单灵活?好主意?我怎么在Knockout JS中做到这一点?

Eri*_*rus 3 javascript state state-machine sammy.js knockout.js

我是Knockout JS的新手.我应该使用sammy.js来帮助我吗?

我正在构建一个Knockout JS应用程序(单页),当我从一个州移动到另一个状态时,究竟哪些子面板可见以及它们做了​​什么改变.例如:

  • 登录前,我有一个邀请用户登录的大面板.

  • 登录后,我有一堆标签,一个搜索的主要区域和底部的广告.

  • 如果用户进行搜索,那么我最终处于我们看到标签,搜索区域和搜索结果区域的状态.

我想通过让一个状态机在用户点击时从一个状态移动到另一个状态来实现这一点,这类似于解析器从一个状态移动到另一个状态的方式.

我想象委托当前状态,一个悬挂在ViewModel上的对象(也许),这样我的20个左右的不同状态几乎就像20个非常简单的不同UI,每个UI都与其他UI分开,简单,干净,易于理解.

1 - 如何执行此操作,让UI将子UI委托给挂在ViewModel上的子对象?

2 - 有没有更好的方法来保持我的UI简单,即使它有很多状态,不同的状态通常在哪些元素(子面板)可见方面看起来非常不同?

3 - 有没有人有一个例子,代码重复委托给子用户界面?

我有道理吗?

fre*_*ent 6

一个可能非常适合的框架是machina.js - 应该就是你想要的.

以下是jQuery UK - 有状态机器的介绍