我创建了一个简单的服务器(localhost:8080),使用Mustache打印文件夹中的相册名称,但它无效。
我的设置功能的方式是 1.我在终端上运行server.js(用nodejs编写) 2. localhost:8080 / pages / home在浏览器上导致server.js解析请求并在basic.html中调用 3. home.html中的basic.html调用
我的home.js是:
$(function()
{
var tmpl, // main template - html
tdata= {}; // json data object feeding the template
// Initialise page
function show()
{
// Load html template
$.get("/templates/home.html", function(d)
{
tmpl= d;
});
//Retrieve server data, then initialize the page
$.getJSON("/albums.json", function(d)
{
$.extend(tdata, d.data);
});
// After completion of AJAX calls, parse the template
// replacing mustache tags with vars
$(document).ajaxStop(function()
{
var finald= mine(tdata);
var rendp= Mustache.render(tmpl, finald);
$("body").text(rendp);
});
}
show();
});
function mine(data)
{
if(data.albums && data.albums.length> 0)
data.have_albums= true;
else
data.have_albums= false;
return data;
}
以上(home.js)在home.html中调用,即:
<div id="alblis">
{{#have_albums}}
<p> Number of albums: {{albums.length}}
</p>
{{/have_albums}}
<ul id="albums">
{{#albums}}
<li class="album">
<a href=
"http://localhost:8080/albums/{{album_name}}"> {{album_name}}
</a>
</li>
{{/albums}}
{{^albums}}
<li> Sorry, no albums </li>
{{/albums}}
</ul>
</div>
因此,home.js的Mustache.render(..,..)部分显然存在问题
在浏览器中输入http://localhost:8080/pages/home
后,在server.js运行的情况下,我在运行server.js的终端中获得以下内容
incoming req.: (GET) /pages/home
incoming req.: (GET) /content/jquery.js
incoming req.: (GET) /content/mustache.js
incoming req.: (GET) /content/home.js
incoming req.: (GET) /templates/home.html
incoming req.: (GET) /albums.json
旁注:终端上运行curl localhost:8080/albums.json
的结果为
{"error":null,"data":{"albums":[{"album_name":"friends","title":"friends"},{"album_name":"travel","title":"travel"}]}}
我希望浏览器中的相册名称在运行时显示:http://localhost:8080/pages/home
但这种情况不会发生!!
答案 0 :(得分:0)
我没有将文件目录放在系统o_O的正确位置!
我的函数(在home.js中)仍然无效 - 所以我把它的内容导入了main函数。