2016-02-29 120 views
0

我正在从我的firebase数据库中读取大量不同的数据,目前我已对其进行了硬编码。这工作正常,但是我有很多代码行,现在当我想改变我的代码时,它变得非常混乱。下面我粘贴了我所采用的当前应用。如何从firebase中读取数据并将其写入文本框中javascript

var ref = new Firebase("URL"); 

// Data set 1 
ref.on('child_added', function(snapshot) { 
var snapshot = snapshot.val();  
textbox1.innerHTML = snapshot.getvalue1.age; 
}); 

ref.on('child_changed', function(snapshot) { 
var snapshot = snapshot.val(); 
textbox1.innerHTML = snapshot.getvalue1.age; 
}); 

// Data set 2 
ref.on('child_added', function(snapshot) { 
var snapshot = snapshot.val();  
textbox2.innerHTML = snapshot.getvalue2.age; 
}); 

ref.on('child_changed', function(snapshot) { 
var snapshot = snapshot.val(); 
textbox2.innerHTML = snapshot.getvalue2.age;  
}); 

..... ..... .....

// Data set 100 
ref.on('child_added', function(snapshot) { 
var snapshot = snapshot.val();  
textbox100.innerHTML = snapshot.getvalue100.age; 
}); 

ref.on('child_changed', function(snapshot) { 
var snapshot = snapshot.val(); 
textbox100.innerHTML = snapshot.getvalue100.age; 
}); 

相反,我采取的办法,是有可能使用一个for循环或类似的东西这是为了遍历每个数据,因为我的firebase中的每个文本框/关键字的结构都差不多。

我相当新的JavaScript,但从我的Java知识,我相信它会开始这样的事情;

var myTextbox = document.getElementById("mytextbox"); 
for (var i = 0; i < myTextbox.length; i++) { 

} 

欢迎任何帮助,如果我的问题不明确,请让我知道。

编辑:

Mydata: 
textbox1 - value - age : "This is textbox 1, age:21" 
textbox2 - value - age : "This is textbox 2, age:53" 
textbox2 - value - age : "This is textbox 3, age:04" 
.... 
.... 

回答

0

我不是在火力方面的专家,但在这里,你可以尝试一些可能的解决方案。例如,您可以使用'value'来代替编写child_added和child_changed。 (Reference

ref.on('value', function(snapshot) { 
var snapshot = snapshot.val();  
textbox1.innerHTML = snapshot.getvalue1.age; 
}); 

但是,这不是你的问题,因为你希望所有的值在一次检索一个很好的解决方案。 看起来你的快照具有属性'getValuei'的所有值,其中i从1 ... n。 一个更好的解决办法是这样的..

ref.on('value', function(snapshot) { 
var snapshot = snapshot.val();  
textbox1.innerHTML = snapshot.getvalue1.age; 
textbox2.innerHTML = snapshot.getvalue2.age; 
textbox3.innerHTML = snapshot.getvalue3.age; //..and so on.. 
}); 
+0

您好,我试过,但这个只读取第一个文本框我在这种情况下textbox1.innerHTML = snapshot.getvalue1.age定义数据;并且通过使用'value'而不是data_added/data_changed它会返回undefined。 – Henry

+0

你很可能会得到一个列表。你可以试试这个来检查 - snapshot.forEach(function(childsnapshot){childsnapshot.val(); }) – Nikhil

相关问题