我使用主干关系的includeInJSON:"id"只包含相关的模型ID,以避免向我的服务器端发送整个对象树的垃圾邮件。不幸的是,默认情况下,Backbone.Marionette.View 仅公开 toJSON 返回的视图模式的属性,这意味着相关模型在视图模板中不再可访问。
我意识到我需要一个自定义的Marionette.View serializeData。由于几乎所有模型都需要这样做,我希望能够普遍解决这个问题;即覆盖所有视图的序列化数据,以便它对主干关系 id 引用执行正确的操作。
有人可能已经这样做了吗?我对此不太抱有希望,但认为还有其他人可以使用它,所以如果没有别的,一旦我编码了它,这将作为一个转储我的解决方案的地方。:)
任何解决方案都需要以下选项之一:
为模型定义两个版本的 toJSON,一个使用 includeInJSON,另一个始终将其视为 true。
某种方法可以通过木偶对仅使用模型属性和基于属性的帮助程序的视图模板的限制打洞。
我有一个使用选项 #1 的功能解决方案,但这是一个黑客,我不忍心公开发布它。基本上,在序列化数据中,我正在进入模型并在调用 toJSON 之前和之后修改_relations。不是线程安全和丑陋的。希望能很快回来,找到合适的解决方案。