2017-01-26 7 views
0

Что я пытаюсь сделать, это получить данные из базы данных, и когда страница загрузится, они будут отображаться на экране. когда пользователь регистрируется в нем, имеет URL-адрес базы данных, который сохраняется в переменной db, и я использую db.allDocs, чтобы получить все данные от этого пользователя.неправильная последовательность последовательности загрузки

Теперь. У меня есть работа над кнопкой <button onclick="showInfoItems()"> Но когда я пытаюсь загрузить ее, она работает, но не с правильной базой данных. Это связано с тем, что пользователь почему-то неизвестен.

мой код:

<body> 
<ul id="info-lijst"></ul> 
<script src="js/showinfo.js"></script> 
<script>onload = showInfoItems();</script> 

инфо пользователя известен в showinfo.js, но по какой-то причине пользователь не определен, пока не будет нажата кнопка OnClick.

Я думал, что когда я впервые загружу файл js (как и я), а затем сделаю onload, он будет работать, но нет. имя пользователя не определено.

Кто-нибудь знает, что я делаю неправильно, или как я могу это исправить?

EDIT:

showInfoItems.js:

function showInfoItems() { 
    console.log(dbrp); 
    dbrp.allDocs({ 
     include_docs: true, 
     attachments: true, 
     descending: true 
    }).then(function (doc) { 
     console.log(doc); 
     buildInfoItem(doc.rows); 
    }).catch(function (err) { 
     console.log(err); 
    }); 
} 

Что переменная dbrp является: локальный: 5984/userdb-неопределенными и когда я сделать OnClick это: локальный: 5984/userdb -1234567890 (имя пользователя известно)

+0

так OnLoad знает функцию, но данные в этой функции (имя пользователя в URL базы данных нет) – thomagron

+0

А вы определенно причиной является передний конец вещи? Вы говорите, что он работает с нагрузкой, но последовательность неверна. – Crowes

+0

можете ли вы показать свой код 'showInfoItems()' please – elementzero23

ответ

1

Вы неправильно определили нагрузку. Он ожидает вызываемую функцию. То, что вы делаете, сразу вызывает вашу функцию.

window.onload = function() { 
    showInfoItems() 
}); 

EDIT

Так как это, кажется, больше проблема PouchDB расширить свой ответ.

Проблема в том, что вам нужно ждать вызова асинхронной функции. Эта функция не выполняется, когда ваш документ готов. Так что либо добавить обратный вызов этой функции, чтобы вызвать другую функцию, когда это будет сделано, или вы добавите направить CustomEvent

document.dispatchEvent(new CustomEvent('databaseReady')); 

Тогда вы можете слушать это событие и привязать несколько функций к нему.

document.addEventListener('databaseReady', function() { 
    showInfoItems() 
}); 

http://codepen.io/anon/pen/vgeyzV?editors=1010

+1

теоретический код фактически использует' window .onload' неправильно ... имея только onload в глобальной области, эквивалентно window.onload –

+0

Я точно указал это в 2) – pixelarbeit

+0

Я сделал это сейчас, но по-прежнему дает мне список пользователей, которые не определены. – thomagron

 Смежные вопросы

  • Нет связанных вопросов^_^