我剛開始學習mithril,並且正在嘗試編寫一個與RESTful API交互的簡單前端。但是,當我在瀏覽器中加載時,瀏覽器每秒發出30次GET請求到'/ posts'!我不確定這是否是我的代碼錯誤或mithril工作原理......如何在整個代碼中使m.request發出請求一次,或者更新Post.list?m.request問題太多請求
var Post = {
model: function(data) {
data = data || {};
this.id = m.prop(data.id);
this.text = m.prop(data.text);
this.rating = m.prop(data.rating);
this.created_at = m.prop(data.created_at);
this.url = m.prop(data.url);
this.title = m.prop(data.title);
this.user_id = m.prop(data.user_id);
},
list: function() {
return m.request({
method: "GET",
url: "/posts/",
type: Post.model
});
}
}
var PostIndex = {
controller: function() {
this.posts = Post.list();
},
view: function(ctrl) {
return [
m("table.table", [ m("tbody", [
ctrl.posts().map(function(post) {
return m("tr", [
m("td.heading", { onclick: m.route('/posts/' + post.id) }, [
post.title,
m("small", post.url)
]),
m("td", [ m("small", post.user + ": " + post.created_at) ])
]);
})
])])
];
}
};
m.request是基本的AJAX。 「/ posts /」的網址沒有給你一個帖子列表。你需要「GET」一個文件,而不是目錄。米索莉希望這個文件是一個JSON文件。該文件也可以是您的後端(php/python/perl/javascript)返回JSON的腳本。如果它不返回JSON,則有方法將響應轉換爲JSON。首先閱讀AJAX,然後閱讀m.request上的Mithril文檔:http://lhorie.github.io/mithril/mithril.request.html –
是的,我明白了;我還在sinatra中運行後端Web API,它在'/ posts /'中爲JSON中的帖子提供數組。我的問題不是解析JSON或顯示帖子的內容,而是關於爲什麼m.request每秒鐘觸及服務器<30次。 –
對不起,很難告訴開發人員如何使用一段代碼。我不能在沒有看到更多代碼的情況下回答你的問題,但是AFAIK唯一可以進行這麼多調用的Mithril是在創建列表的視圖中使用了m.request,並且我沒有在上面的代碼中看到這個錯誤。 sinatra是否提供JSON「文件」,或者是一個一個一個的數組?是否有多個帖子,每個都是JSON格式,或者是一個包含所有帖子的JSON數組 - 正如m.request所期望的那樣? sinatra是否可能在吐出流中的帖子?我很抱歉,我對sinatra或您正在使用的圖書館知之甚少。 –