2017-02-15 12 views
0

Я создаю хром-приложение, и я использую Vue.js для страницы параметров. Итак, я хочу загрузить настройки из хромового хранилища и поместить его в данные vue.загрузить данные из chrome.storage в данные vue.js

Моя проблема заключается в том, что я не могу получить доступ к компонентам vue изнутри обратного вызова хром-памяти. Каждый раз, когда я вызываю его внутри обратного вызова, все элементы vue не определены. Есть ли способ, чтобы функция cb хранения chrome возвращала значение или давала ему дополнительный обратный вызов.

Вот мой код

name: 'app', 
    data: function() { 
     return { 
      data [] 
     } 
    }, 
    methods: { 
     init: function() { 
      chrome.storage.sync.get('series', function (storageData) { 
       this.data = storageData //this is not possible, because this.data is undefined 
       }) 
      }); 
     } 
    }, 
    created: function() { 
     this.init(); 
    } 
} 

ответ

2

При использовании ES6 и transpiling (предпочтительный подход). Примечание. Функции стрелок не создают новый контекст.

init: function() { 
    chrome.storage.sync.get('series', storageData => { 
     this.data = storageData 
    }); 
} 

ES5 обходной путь:

init: function() { 
    var self = this; 
    chrome.storage.sync.get('series', function (storageData) { 
     self.data = storageData 
    }); 
} 
+0

работал идеально. Большое спасибо – Ruderer

+1

Прохладный, пожалуйста, отметьте как решено. :) – sandrooco