gpt4 book ai didi

ember.js - 在 Ember.js 中放置全局状态的位置?

转载 作者:行者123 更新时间:2023-12-04 23:24:50 25 4
gpt4 key购买 nike

在我的 Ember.js 应用程序中,用户可以拥有多个项目。由于一次只能查看一个项目,因此通过导航栏选择事件项目。这基本上是一个全局状态(也反射(reflect)在 URL /projects/xyz 中)。

由于多个组件取决于项目选择,我该将这些信息放在哪里?我以什么形式保存它(实例或 ID)?

关于我的现状:我有一条路由可以拦截对 setupController 的调用为 /projects/:project_id并使用 App.set("projectId", model)将实例放置在全局命名空间中。这看起来很糟糕,不是吗?

最佳答案

每当您拥有反射(reflect)在 url 中的全局状态时,您都可以使用 ember 路由器来管理该状态。

例如,假设您有一个嵌套在项目下的任务资源,例如:

App.Router.map(function() {
this.resource('project', { path: '/projects/:project_id' }, function() {
this.route('edit');
this.resource('tasks', function() {
this.route('new');
});
});
});

Ember 将使用 project_id url 段来查找您的模型并将其设置为 ProjectController 的内容。要从另一个 Controller 访问当前选定的项目,请使用 needs 声明依赖项。数组并通过 controllers 访问它属性(property)。
App.TasksController = Ember.ArrayController.extend({
needs: ['project']
});

// tasks/index.hbs
Project name: {{controllers.project.name}}

controllers-needs-explained

关于ember.js - 在 Ember.js 中放置全局状态的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14772696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com