Ember.js 如何创建一个;靴;说明所有其他州都要通过哪些州过渡?
我正在构建一个具有持久视图的简单应用程序。这种观点总是存在的。 视图取决于一些数据。在不同的状态下输入应用程序应 确保视图中包含其数据。我认为这是最好的办法 将创建一个初始状态,调用Ember.js 如何创建一个;靴;说明所有其他州都要通过哪些州过渡?,ember.js,ember-old-router,Ember.js,Ember Old Router,我正在构建一个具有持久视图的简单应用程序。这种观点总是存在的。 视图取决于一些数据。在不同的状态下输入应用程序应 确保视图中包含其数据。我认为这是最好的办法 将创建一个初始状态,调用connectOulet来连接数据和视图。这样,所有后续状态都必须通过该状态进行转换。我不知道如何让路由器在连接后自动转换到下一个状态 这是我的路由器(ATM机坏了)。见评论 Inbox.Router = Ember.Router.extend enableLogging: true location: "h
connectOulet
来连接数据和视图。这样,所有后续状态都必须通过该状态进行转换。我不知道如何让路由器在连接后自动转换到下一个状态
这是我的路由器(ATM机坏了)。见评论
Inbox.Router = Ember.Router.extend
enableLogging: true
location: "history"
initialState: "bootUp"
bootUp: Ember.Route.extend
root: Ember.Route.extend
route: '/'
# All states need to transition through this code
# How can I transition to root state after this code executes?
connectOutlets: (router, context) ->
router.get('applicationController').connectOutlet
outletName: "list"
name: "messages"
context: Inbox.store.findAll(Inbox.Message)
root: Ember.Route.extend
showMessage: Ember.Route.transitionTo('root.showingMessage')
initialState: 'dashboard'
dashboard: Ember.Route.extend
route: '/dashboard'
# Entering this state needs the messages view loaded
# with data
showingMessage: Ember.Route.extend
route: '/:id'
connectOutlets: (router, context) ->
router.get('applicationController').connectOutlet
outletName: "details"
name: "message"
context: context
serialize: (router, context) ->
id: context.get('id')
deserialize: (router, urlParams) ->
Inbox.store.find Inbox.Message, urlParams.id
对我来说,用FSM建模这种行为似乎是正确的。这是正确的方法还是有更好的方法?您应该能够在根路由中调用connectOutlets。我认为您不能像您的示例那样在root之上或之前创建路由/状态
root: Ember.Route.extend
showMessage: Ember.Route.transitionTo('root.showingMessage')
initialState: 'dashboard'
connectOutlets: (router) ->
router.get('applicationController').connectOutlet
outletName: "list"
name: "messages"
context: Inbox.store.findAll(Inbox.Message)
dashboard: Ember.Route.extend
route: '/dashboard'
# Entering this state needs the messages view loaded
# with data
showingMessage: Ember.Route.extend
route: '/:id'
connectOutlets: (router, context) ->
router.get('applicationController').connectOutlet
outletName: "details"
name: "message"
context: context
serialize: (router, context) ->
id: context.get('id')
deserialize: (router, urlParams) ->
Inbox.store.find Inbox.Message, urlParams.id
您应该能够在根路由中调用connectOutlets。我认为您不能像您的示例那样在root之上或之前创建路由/状态
root: Ember.Route.extend
showMessage: Ember.Route.transitionTo('root.showingMessage')
initialState: 'dashboard'
connectOutlets: (router) ->
router.get('applicationController').connectOutlet
outletName: "list"
name: "messages"
context: Inbox.store.findAll(Inbox.Message)
dashboard: Ember.Route.extend
route: '/dashboard'
# Entering this state needs the messages view loaded
# with data
showingMessage: Ember.Route.extend
route: '/:id'
connectOutlets: (router, context) ->
router.get('applicationController').connectOutlet
outletName: "details"
name: "message"
context: context
serialize: (router, context) ->
id: context.get('id')
deserialize: (router, urlParams) ->
Inbox.store.find Inbox.Message, urlParams.id
解决方案是创建一个状态根状态,通过它进行转换。
根目录
将自身声明为不可路由。因此,我们必须为此创建一个子状态。这是我的路由器
# Assume users enters a /
Inbox.Router = Ember.Router.extend
enableLogging: true
location: "history"
# Root application state
root: Ember.Route.extend
# This is the state that the others must transition.
# It's route is "/". It has a nested state called "home"
# which route is "/". Home's route is relative to "/".
# So when a user enters at "/" the "home" state is selected.
# The router transitions into "index" then "home".
# When the user enters at "/:id" the user transitions through "index"
# since "/:id" is a subroute of "/".
#
# This is explained in the router's nested state documentation.
index: Ember.Route.extend
route: '/'
connectOutlets: (router, context) ->
router.get('applicationController').connectOutlet
outletName: "list"
name: "messages"
context: Inbox.store.findAll(Inbox.Message)
router.get('applicationController').connectOutlet
outletName: "details"
name: "message"
router.get('applicationController').connectOutlet
outletName: "filters"
controller: router.messagesController
viewClass: Inbox.FiltersView
showMessage: Ember.Route.transitionTo('showingMessage')
home: Ember.Route.extend
route: '/'
showingMessage: Ember.Route.extend
route: '/:id'
connectOutlets: (router, context) ->
router.get('messageController').set('content', context)
serialize: (router, context) ->
id: context.get('id')
deserialize: (router, urlParams) ->
Inbox.store.find Inbox.Message, urlParams.id
解决方案是创建一个状态根状态,通过它进行转换。
根目录
将自身声明为不可路由。因此,我们必须为此创建一个子状态。这是我的路由器
# Assume users enters a /
Inbox.Router = Ember.Router.extend
enableLogging: true
location: "history"
# Root application state
root: Ember.Route.extend
# This is the state that the others must transition.
# It's route is "/". It has a nested state called "home"
# which route is "/". Home's route is relative to "/".
# So when a user enters at "/" the "home" state is selected.
# The router transitions into "index" then "home".
# When the user enters at "/:id" the user transitions through "index"
# since "/:id" is a subroute of "/".
#
# This is explained in the router's nested state documentation.
index: Ember.Route.extend
route: '/'
connectOutlets: (router, context) ->
router.get('applicationController').connectOutlet
outletName: "list"
name: "messages"
context: Inbox.store.findAll(Inbox.Message)
router.get('applicationController').connectOutlet
outletName: "details"
name: "message"
router.get('applicationController').connectOutlet
outletName: "filters"
controller: router.messagesController
viewClass: Inbox.FiltersView
showMessage: Ember.Route.transitionTo('showingMessage')
home: Ember.Route.extend
route: '/'
showingMessage: Ember.Route.extend
route: '/:id'
connectOutlets: (router, context) ->
router.get('messageController').set('content', context)
serialize: (router, context) ->
id: context.get('id')
deserialize: (router, urlParams) ->
Inbox.store.find Inbox.Message, urlParams.id
第一个印象是它没有根节点。您只能有一个根目录,所有其他子目录都嵌套在它下面。启动和根状态都是根级别的第一印象是它没有根节点。您只能有一个根目录,所有其他子目录都嵌套在它下面。启动和根状态都在根级别我已经发布了我的解决方案。根据文档,
root
状态为“不可路由”。我试图调用connectOutlet
,但尚未定义控制器。我想这是因为“不可路由”的评论。我不知道这是什么意思。不管怎样,我的答案都是我想要的。我已经发布了我的解决方案。根据文档,root
状态为“不可路由”。我试图调用connectOutlet
,但尚未定义控制器。我想这是因为“不可路由”的评论。我不知道这是什么意思。不管怎样,我的答案都是我想要的。