Как добавить свойство с точкой в ​​имени к существующему CanJS can.Map?

Скажем, у меня есть существующий can.Map с именем someMap, и мне нужно добавить новое свойство с именем some.data, которое будет содержать string.

В vanilla JS вы можете сделать someMap["some.data"] = "someString" \\ Object {some.data: "someString"}

Кажется, нет способа сделать это с can.Map, если я не сделаю что-то вроде извлечения someMap.attr() и сохранения его в var, затем добавлю свойство к этому var, как указано выше, затем выполните someMap.attr(someObjVar), но это не вызывает событие изменения что здесь нужно.

Есть ли способ сделать это? Переименовать свойство не вариант :(

Спасибо!


person Jazzy    schedule 30.05.2015    source источник


Ответы (2)


Вы не можете. URL-адрес кодирует его, а затем декодирует на выходе.

person Jazzy    schedule 21.06.2015

Вы можете экранировать ключи can.Map:

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