【发布时间】:2015-03-18 14:01:16
【问题描述】:
在 ember 控制器中,它们保持状态跨越转换,因为它们是单例,是否可以对组件做同样的事情?
我需要这个,因为在我的 ember 应用程序中,用户在路由之间导航,但相应路由中的组件被初始化为其初始状态,我不希望在这种情况下发生这种情况。
【问题讨论】:
-
您能详细说明您的用例吗?也许您可以将最后一个状态存储在控制器中
在 ember 控制器中,它们保持状态跨越转换,因为它们是单例,是否可以对组件做同样的事情?
我需要这个,因为在我的 ember 应用程序中,用户在路由之间导航,但相应路由中的组件被初始化为其初始状态,我不希望在这种情况下发生这种情况。
【问题讨论】:
对于这个问题,我们需要更多上下文,但可能的答案是您的组件需要位于父模板中,当您导航到不同的路线时,该模板不会转换。所以在 application.hbs 你会有:
{{your-persistent-component}}
{{outlet}} <!-- Outlet your sub-routes are rendered into -->
根据您的需要,您可能需要将其嵌套到资源中,例如,如果您不希望组件显示在登录页面上,但确实希望它显示在登录用户的索引页面上。
【讨论】:
this.resource('user', { path: '/' }, function() { // more routes and resources 这样的资源来保存登录用户的模型/状态。但是您并没有真正详细说明,所以我无法说出您的用例是什么。
我发现对于我的用例,我需要将组件中的特定字段绑定到控制器或模型中。似乎组件在每次转换时都设置为初始状态。
例如:
{{foo-comp fooCompProp1=fooControllerProp1 fooCompProp2=fooModelProp1 }}
【讨论】: