【发布时间】:2014-10-03 16:54:23
【问题描述】:
我的 nodejs 应用程序读取一个 json 文件,当事情发生变化时更新它(通过自动传感器),然后通过 socket.io 将它发送到 web 应用程序进行手动控制,进而可以更新 json 文件。
我发现让 Web 应用程序使用 jQuery/js for (key in val).. append.. 显示这些数据有点麻烦和棘手,并且不喜欢 .each() jQuery 方法。只需将新对象添加到 json 文件中,添加新内容仍然很简单。
我正在考虑开源它,我已经阅读了 Angular.js 并认为它的 ng-repeat、ng-show、ng-filter 等。做事方式可能会有所帮助。
下面的 json 不是我真正的 json,但它遵循相同的结构。
这是 jQuery。
$.getJSON( "/db.json", function( data ) {
var things = [],
n = 0;
for (var i in data) {
things.push(
"<div class=\"group\"><strong class=\"title\">"+Object.keys(data)[n]+"</strong><br>"
)
n++;
a = 0;
for (var x in data[i]) {
things.push(
"<div>"+data[i][x].name+""
)
a++;
b = 0;
for (var y in data[i][x].actions) {
things.push(
"<button onclick=sendCommand('"+
data[i][x].command+
"',"+
data[i][x].pin+
","+
data[i][x].actions[y]+
")>"+
Object.keys(data[i][x].actions)[b]+
"</button>"
)
b++;
}things.push("</div>")
}things.push("</div>")
}
$(things.join( "" )).appendTo( "#buttons" );
});
Javascript 函数..
function sendCommand(command, pin, val) {
socket.send( command +" "+ pin +" "+ val);
}
这是 json。
{
"Lights":[{
"name": "light-one",
"pin":"3",
"command":"gpioDo",
"actions": {
"on":"1",
"off":"0"
}
},{
"name": "light-two",
"pin":"5",
"command":"gpioDo",
"actions": {
"on":"1",
"off":"0"
}
},{
"name": "light-three",
"pin":"7",
"command":"gpioDo",
"actions": {
"on":"1",
"off":"0"
}
}],
"Locks":[{
"name": "lock-one",
"pin":"8",
"command":"gpioDo",
"actions": {
"on":"1",
"off":"0"
}
},{
"name": "lock-two",
"pin":"12",
"command":"gpioDo",
"actions": {
"on":"1",
"off":"0"
}
}]
}
我的问题是 Angular.js 或类似的东西会提供一种更简单的方式来呈现 json 吗?只是观看主题演讲是最好的开始吗?
谢谢,
RWXES
【问题讨论】:
标签: javascript jquery json node.js angularjs