所以我试图向一个包含对象名称的对象添加一个属性。这将在 html 名称属性等中使用。
setClientSideOpeningHours: =>
newOpeningHours = {}
existingOpeningHours = _.extend {}, @.get("opening_hours")
_.each _.keys(existingOpeningHours), (item) ->
newOpeningHours[item] = existingOpeningHours[item]
newOpeningHours[item]["day"] = item
console.log "openingHours.friday", newOpeningHours.friday,
"openingHours.friday.day", newOpeningHours.friday.day
@.set "clientside_opening_hours", newOpeningHours
在 Chrome 中,这会打印到控制台:
openingHours.friday openingHours.friday: Object { is_closed: "true", proto : Object } openingHours.friday.day: friday
后来,在模型之外,当我调用@.model.toJSON() 或@.model.attributes 时,day 属性完全不存在。这里发生了什么?
编辑:让它与 $.extend(true,...)
setClientSideOpeningHours: =>
newOpeningHours = {}
existingOpeningHours = $.extend true, {}, @.get("opening_hours")
_.each .keys(existingOpeningHourshours), (item) =>
newOpeningHours[item] = $.extend true, {}, existingOpeningHours[item]
newOpeningHours[item].day = item
@.set "clientside_opening_hours", newOpeningHours