我在MeteorJS控制器中有一个(非常大的)表格。我有几百个输入,例如名称,例如“sheetProperties.X.Y”“sheetProperties.SubForm1.FavoriteColor”等。
我不想在表单中声明所有可能的输入,因为这会成为一个经常变化的噩梦,并且有很多。
为了使它工作,我在我的控制器中放了这样的东西:
#this only works on object without any subproperties..
props = {}
for element in event.target
if element.tagName == "INPUT"
if name.startsWith "sheetProperties"
props[name] = element.value
我想做的是获取名称并将其转换为对象引用。
我在这里开始这个小提琴:http://jsfiddle.net/c463acyu/2/ 目标是使用长名称“sheetProperties.something.somethignElse”并将其转换为适当的对象,例如。
sheetProperties:
something:
somethingElse: "Value goes here"
name = "foo.bar.baz"
value = "42"
names = name.split '.'
console.log names
objGraph = {}
currentObj = objGraph
for name in names
lastObj = currentObj
currentObj = currentObj[name] ?= {}
lastObj[name] = value
console.log(objGraph)