我有一个嵌套的Javascript对象
var data = { 'name': { 'heading': 'Name', 'required': 1, 'type': 'String' },
'profile': {
'age': { 'heading': 'Age', 'required': 0, 'type': 'Number' },
'phone': { 'heading': 'Phone', 'required': 0, 'type': 'String'},
'city': { 'heading': 'City', 'required': 0, 'type': 'String'},
},
'status': { 'heading': 'Status', 'required': 1, 'type': 'String' }
};
Run Code Online (Sandbox Code Playgroud)
在这里,我可以访问data.profile.age.type或data.name.type这些字段.没有问题如果我有动态变量名称,我可以访问如下.再一次,没问题.
f = 'profile'; data[f].age.type
Run Code Online (Sandbox Code Playgroud)
但是,这里我有变量名称,如'name','profile.age','profile.city'等,显然我无法访问它们,因为f ='profile.age'; 数据[f] .type不起作用.
谁能指导我如何以最直接和简单的方式访问它们(获取/设置)?
注意:我试过这个,它适用于get.
data.get = function(p) { o = this; return eval('o.'+p); };
f = 'profile.age'; data.get(f).name;
Run Code Online (Sandbox Code Playgroud)
虽然设置似乎不够简单.如果有更好的获取和设置解决方案,请告诉我.
在sails.js 中,模型支持验证、创建、更新和销毁的生命周期回调。
是否也支持 find() 或 query 的回调?像 beforeFind() 和 afterFind()?
这个想法是一样的。我想在查询运行之前或查询运行之后验证/修改参数。
有什么想法吗?
我有这个回调函数设置:
var contextMenu = [];
var context = [ { "name": "name1", "url": "url1" }, {"name": name2", "url: "url2" } ];
for(var i=0; i < context.length; i++) {
var c = context[i];
var arr = {};
arr[c.name] = function() { callback(c.url); }
contextMenu.push( arr );
}
function callback(url) {
alert(url);
}
Run Code Online (Sandbox Code Playgroud)
问题是传递给回调的url值始终是上下文变量中的最后一个值 - 在本例中为"url2".我期望将特定值传递给回调的每个"实例",但由于回调似乎记住了相同的值,因此最后一次引用它.
我有点卡住了.任何帮助,将不胜感激.
PS:我正在使用jQuery ContextMenu,根据我的理解,它不支持将自定义数据发送到其回调函数.正是在这种背景下,我遇到了这个问题.在这种环境下要克服的任何建议也很有帮助!