如何将名称中带点的 属性 添加到现有的 CanJS can.Map?

How can I add a property with a dot in the name to an existing CanJS can.Map?

假设我有一个名为 someMap 的现有 can.Map,我需要添加一个名为 some.data 的新 属性,它将包含一个 string

在 vanilla JS 中,你可以做到 someMap["some.data"] = "someString" \ Object {some.data: "someString"}

似乎没有办法使用 can.Map 执行此操作,除非我执行类似提取 someMap.attr() 并将其存储在 var 中的操作,然后添加属性 像上面那样 var,然后执行 someMap.attr(someObjVar),但这不会触发此处需要的更改事件。

有办法吗?重命名 属性 不是一个选项:(

谢谢!

你不能。 URL 对其进行编码,然后在输出时对其进行解码。

您可以转义 can.Map 的键:

var a = {};
a['test.key'] = 'value';
var map = new can.Map(a);
map.attr('test\.key'); // "value"