Javascript 使用状态机使我的UI简单灵活?好主意?我如何在淘汰赛中做到这一点?
我对击倒JS还不熟悉。我应该使用sammy.js来帮助我完成以下任务吗 我正在构建一个击倒JS应用程序(单页),当我从一个州移动到另一个州时,确切地说,哪些子面板是可见的,它们做了哪些更改。例如:Javascript 使用状态机使我的UI简单灵活?好主意?我如何在淘汰赛中做到这一点?,javascript,knockout.js,state,state-machine,sammy.js,Javascript,Knockout.js,State,State Machine,Sammy.js,我对击倒JS还不熟悉。我应该使用sammy.js来帮助我完成以下任务吗 我正在构建一个击倒JS应用程序(单页),当我从一个州移动到另一个州时,确切地说,哪些子面板是可见的,它们做了哪些更改。例如: 在登录之前,我有一个大面板邀请用户登录 登录后,我有一堆标签,一个主要的搜索区域和底部的广告 如果用户进行搜索,那么我将进入一种状态,在这种状态下,我们将看到选项卡、搜索区域和搜索结果区域 我想象通过一个状态机来实现这一点,当用户点击时,状态机从一个状态移动到另一个状态,就像解析器从一个状态移动到
- 在登录之前,我有一个大面板邀请用户登录
- 登录后,我有一堆标签,一个主要的搜索区域和底部的广告
- 如果用户进行搜索,那么我将进入一种状态,在这种状态下,我们将看到选项卡、搜索区域和搜索结果区域
我说得通吗 我使用的是一种方案,在该方案中,我只是有两个独立的状态可观测值——一个用于整个应用程序状态,另一个用于当前“页面”(选项卡,或“页面”对您意味着什么)。例如,在coffeescript中:
@currentState('logged-in')
@currentPage('page-foo')
@applicationState = ko.computed => "#{@currentState()}:#{@currentPage()}"
然后,在敲除可见绑定中,可以匹配特定状态或子状态:
<div data-bind='visible: applicationState() == "logged-in:page-foo">
一个可能非常适合的框架是-应该正是您想要的
这是一个来自英国jQuery的关于它的演示-通常最好集中在一个特定的问题上,它会让你得到更多更好的答案你问了很多问题,但我想告诉你模板绑定。你可以将模板本身绑定到你的viewmodel,这样一个代表你整个应用程序的content
div就可以这是Doug Neiner的一个很棒的演示,他现在使用了Machina.js,我可以保证它的效率和实用性!
<div data-bind='visible: applicationState().endsWith("page-foo")'>