Javascript faux persisted state应该在您的ember.js web应用程序中的何处?

Javascript faux persisted state应该在您的ember.js web应用程序中的何处?,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我最近读了一篇优秀的帖子,发现他对你的控制器/视图/模型/路由器/模板“应该负责什么”的解释很有趣 当您有一个数据库支持的模型“一切正常”时,将持久化状态放在模型对象中,任何未持久化的状态都很可能在控制器中找到 但假设您允许客户定义给定模型的外观(各种配置)。从这个配置中,您需要构建一个“结构”,以便在运行时添加这些模型 例如,您允许您的客户定义他们每天的营业时间。从这个配置中,您需要在页面上添加一个空的或“人造”的模型来填充一整天。您创建这些人造模型是因为对于每个工作日,您还需要获取这些模型的

我最近读了一篇优秀的帖子,发现他对你的控制器/视图/模型/路由器/模板“应该负责什么”的解释很有趣

当您有一个数据库支持的模型“一切正常”时,将持久化状态放在模型对象中,任何未持久化的状态都很可能在控制器中找到

但假设您允许客户定义给定模型的外观(各种配置)。从这个配置中,您需要构建一个“结构”,以便在运行时添加这些模型

例如,您允许您的客户定义他们每天的营业时间。从这个配置中,您需要在页面上添加一个空的或“人造”的模型来填充一整天。您创建这些人造模型是因为对于每个工作日,您还需要获取这些模型的持久版本(因为客户实际上可以使用应用程序创建一个)

因此,使用配置,我留下了一个模型(实际上保存到数据库/etc),但我需要混合这个w/a模型,它实际上并不存在,但在Handlebar模板中,它确实有助于有一个填充版本,这样html就不复杂了(将逻辑保留在javascript中)

目前,我将此逻辑存储在模型本身上,因为持久化的实际模型与作为单个数组绑定到Handlebar模板的伪模型/占位符之间存在“混合”(但其中只有一些通常是持久化支持的模型)

我的问题是——这个数组是否应该是控制器的一部分,因为“它的一部分”不受支持?或者整个数组应该是对ember数据的“find”方法的覆盖(就像我现在所做的那样),以启用“在存在时用真实模型替换每个人造对象”行为


提前感谢

视图使用控制器显示数据。控制器作为模型的代理,视图可以显示来自模型的信息

但您不必将模板链接到模型。您可以在控制器上具有在把手模板中使用的属性。然后,在持久化相关记录时,由您将这些数据传输/操作到模型。 模型上的属性也可以不是
DS.attr
,因此不会被持久化


用一个示例来回答/理解您的问题会更容易。

这是一个好问题,但有点长:)我认为当您缩短它时,人们会更愿意回答它。我认为它可以归结为“我应该在哪里放置一系列模型/配置(作为排序的空模型)”。我在“软件即服务”web应用程序中看到了这一点,因为它们通常允许用户配置最终作为内存中的模型(在运行的应用程序中)的系统部分。例如,任何软件即服务模型,而不是完全支持持久性的模型,您的配置代表一些“内存中”模型(但仅在运行时)。因此,我所做的是在app init(ember)期间,我只需获取配置并动态构建配置表示的每个模型,并将其存储为一个简单的javascript对象(ember.object.create)。似乎解决了我的问题,因为我喜欢将这些模型视为持久性支持(即使服务器端可能不存在每个项目的数据库条目)