В моем коде this.options
возвращает объект с вложенным .all
объектом. Тем не менее, когда я пытаюсь получить к нему доступ с помощью this.options['all']
или this.options.all
, я получаю undefined
.
console.log(this.options):
Object
all: Object
cfg_autoresize: "true"
cfg_autosave: "false"
cfg_monthly_target: "monthly_target"
cfg_statistics: "statistics"
cfg_ticker: "ticker"
cfg_yearly_target: "yearly_target"
__proto__: Object
Может ли кто-нибудь помочь мне понять это, никогда раньше не было этой проблемы. Спасибо
Edit:
content_script, упрощенная версия
var Dashboard = Backbone.View.extend({
el: $('body'),
options: {},
get_localStorage: function() {
var _this = this;
function handle_response(response) {_this.options.all = response.data;}
chrome.extension.sendRequest({method: "allLocalStorage"}, handle_response);
},
initialize: function() {
this.get_localStorage();
console.log(this.options); // above object
console.log(this.options.all); //undefined
}
});
background.html, взято из документации по Google-chrome-extension и изменено
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if(request.method == "allLocalStorage") {
var options = {};
for (var i=0, l=localStorage.length; i<l; i++){
var key = localStorage.key(i);
var value = localStorage[key];
options[key] = value;
}
sendResponse({data: options});
} else {
sendResponse({});
}
});
В идеале я бы хотел, чтобы в this.options
были все опции без .all
, но это не сработало бы для меня.