我有一个具有简单 MVC 架构的应用程序(桌面,不是 web 或 .net),可以通过简单的绑定机制从模型中显示值和值列表。
该模型是一个树结构的标量和数组节点。一些节点是原始值,一些具有成员子节点的对象。
视图级绑定语法类似于:
app_root.some_node.prices[1] // single "price" object
app_root.some_node.prices // all "price" objects
现在,我需要在通过某种转换过程运行它们之后呈现这些值。
例如:实时货币转换。即比格式化更复杂的东西,可能会失败或在某种程度上依赖于应用程序状态。
如何在保持 MVC 系统和绑定语法健全的同时添加此功能?
我能想到的两个直接选择是:
// Fake "arguments" to a generic app-level converter node?
//
// Very hack-ish looking and now the app has a new
// global "currency_converter" node.
//
app_root.currency_converter.euro.app_root.some_node.prices[1]
app_root.currency_converter.yen.app_root.some_node.prices[1]
// Ad-hoc extension to the "price" objects?
//
// Cleaner binding path, but now I need modify the "price" object for
// each new currency. This also seems wrong.
//
app_root.some_node.prices[1].asEuro
app_root.some_node.prices[1].asYen // etc.
// Adding a post-fix converter option?
//
// Still a cleaner binding path, but now there must exist some magic
// conversion system/registry that the "As" sub-node must know how to talk to.
//
app_root.some_node.prices[1].As.Euro
app_root.some_node.prices[1].As.Yen // etc.
有没有更好的办法?