2016-03-27 1 views
0

私は2つの機能:saveData()loadData()を持っています。 saveData()はすべてのオブジェクトを実行し、後でloadData()と返されるchrome.storage.local.setの文字列IDと値を(おそらく)設定します。さて、私はおそらくそれは動作しないため、言います。アプリを再起動したときの結果はの最後のエントリだけが保存されます。chrome.fileSystem - 複数のファイルエントリを保持/復元しますか?

//I have an array 
//called 'fileEntries' 
//which the user adds fileEntry objects to 
//when they add a tab or open a file 
var fileEntries = []; 
function saveData(){ 
    fileEntries.forEach(function(entry){ 
    //the string id should just be the 
    //index of the entry object within the array 
    //so something like '1' or '2' 
    var stringID = fileEntries.indexOf(entry), 
     value = chrome.fileSystem.retainEntry(entry); 
    chrome.storage.local.set({ stringID : value }); 
    }); 
} 
function loadData(){ 
    chrome.storage.local.get({stringID : null}, function(result){ 
    chrome.fileSystem.restoreEntry(result.stringID, function(entry){ 
     //adds the resulting entry into the array 
     fileEntries.push(entry); 
    }) 
    }) 
} 

どのように手助けをするのですか?それは本当に私を悩ませている、私は無駄に他の方法の束を試してみました。どのような助けが大いに感謝されるでしょう:)

質問が明確でない場合:複数のファイルエントリを保存し、chrome fileSystem APIを使用して個別に復元するにはどうすればよいですか?

答えて

0

.forEach()の2番目のパラメータを使用します。例えば。; .forEach(function(_, enttry){})であり、entryは配列内の反復要素のindexです。 .forEach()コールバックの最初のパラメータはvalueです。 valueを使用しない場合は、アンダースコアを使用してその使用の省略を示すことができます。その後、jsの残りの部分にある既存のentry変数名を.forEach()コールバックで使用することはできます。

+0

私はそれを編集しました。結果は同じです。問題はコードの一部ではありませんでした。それは、数値そのものではなく、 'index'値( '1'、または '2'など何でも)が 'index'として読み込まれていることと関係しています。 _individually_配列内の各オブジェクトのエントリオブジェクトで数値を設定し、個々にエントリを取得し、それを私が持っている 'fileEntries'配列に追加する必要があります。答えをありがとう、私のコードを少しきれいに! – Devplex

+0

@Devplex 'fileEntries'内の' entry'オブジェクトのインデックスまたは 'entry'オブジェクト自体のプロパティを取得しようとしていますか? – guest271314

+0

私は非常に明確でない場合、それらのXDの申し訳ありません。私はfileEntriesを個別に設定し、それらを個別に取得したいと思います。完了したら 'fileEntries'配列に追加してください。 'stringID'はそれぞれのオブジェクトを保存するためのもので、' value'オブジェクトは 'entry'オブジェクトが' chrome.fileSystem.retainEntry() '関数に渡されるときの結果IDです。 – Devplex

関連する問題