我在访问数组内部的元素时遇到问题。这是示例代码:
var Core = {
customNames: {
'1': [ 'Power Off' ],
'21': [ 'TV', 'Bedroom' ]
},
render: function() {
$.each( Core.devices.result, function( i, obj ) {
var name = Core.customNames[obj.idx][1] ? Core.customNames[obj.idx][1] : obj.Name;
});
}
};
obj.idx是一个变量,用值21来说。在这种情况下,如何访问“卧室”?
答案 0 :(得分:0)
在渲染功能中尝试this
!
render: function() {
var that = this;
$.each( this.devices.result, function( i, obj ) {
var name = that.customNames[obj.idx][1] ? that.customNames[obj.idx][1] : obj.Name;
});
}
您必须设置that
,因为$.each
内部的范围会发生变化!
这是我测试过的示例,它可以正常工作:
var thing = {
customNames: {
'1': [ 'Power Off' ],
'21': [ 'TV', 'Bedroom' ]
},
log: function(){
console.log("This got logged inside here: " + this.customNames['21'][0]);
}
}
thing.log()
问候!
答案 1 :(得分:0)
解决了!访问数组元素不是问题,但customNames对象不完整。正确的代码:
var name = Core.customNames[obj.idx] != undefined ? Core.customNames[obj.idx][0] : obj.Name;