Mithril.js 有多个 GET 请求
Mithril.js with multiple GET requests
我的项目最初在 Angular、you can see it on GitHub still。但我正在尝试切换到 Mithril。
我在 data.json 文件(从 GitHub 页面提供服务)上调用请求,它只是按日期排序的事件列表(在编译时排序)。整个文件的加载时间有点可疑,而且只会变得更糟。
我最初的解决方案是尝试加载较小的初始数据子集(通过另一个文件),然后加载其余部分,但我不确定如何使用 Mithril 执行此操作。 (此外,如果有任何相关性的话,我最终需要在数据输出之前对数据进行一些计算。比如添加属性来标记年份和月份的边界。)
当前的相关代码只是this.eventlist = m.request({method: "GET", url: "data.json"});
坐在控制器中。任何关于我如何在秘银中做到这一点的建议(或任何更好的想法的建议)将不胜感激。
这是我目前的代码:
"use strict",
(function(){
var app = {};
app.controller = function() {
this.eventlist = m.request({method: "GET", url: "data.json"});
};
app.view = function(controller) {
return m("ul", [
controller.eventlist().map(function(item){
console.log(item);
return m("li", [
m("a", {href: item.url}, item.name),
m("div", item.description)
]);
})
]);
};
m.module(document.body, app);
})();
我重构了你的控制器,所以它有几个请求函数; init
在启动时被调用,一旦它解析 rest
被调用。
app.controller = function () {
// changed from this. to var so it's accessible inside the then function
var eventlist = m.prop([]);
// load initial data
var init = function () {
m.request({method: "GET", url: "first-data.json"}).
// assign the result to the getter/setter
then(eventlist).
// send the request for the rest of the data
then(rest)
;
};
// load the rest of the data
var rest = function () {
m.request({method: "GET", url: "rest-of-data.json"}).
// concat the resulting array with the current one
then(function (result) {
eventlist(
eventlist().concat(result)
);
})
;
};
init();
// return the eventlist so the view can access it
return {
eventlist: eventlist
}
};
我的项目最初在 Angular、you can see it on GitHub still。但我正在尝试切换到 Mithril。
我在 data.json 文件(从 GitHub 页面提供服务)上调用请求,它只是按日期排序的事件列表(在编译时排序)。整个文件的加载时间有点可疑,而且只会变得更糟。
我最初的解决方案是尝试加载较小的初始数据子集(通过另一个文件),然后加载其余部分,但我不确定如何使用 Mithril 执行此操作。 (此外,如果有任何相关性的话,我最终需要在数据输出之前对数据进行一些计算。比如添加属性来标记年份和月份的边界。)
当前的相关代码只是this.eventlist = m.request({method: "GET", url: "data.json"});
坐在控制器中。任何关于我如何在秘银中做到这一点的建议(或任何更好的想法的建议)将不胜感激。
这是我目前的代码:
"use strict",
(function(){
var app = {};
app.controller = function() {
this.eventlist = m.request({method: "GET", url: "data.json"});
};
app.view = function(controller) {
return m("ul", [
controller.eventlist().map(function(item){
console.log(item);
return m("li", [
m("a", {href: item.url}, item.name),
m("div", item.description)
]);
})
]);
};
m.module(document.body, app);
})();
我重构了你的控制器,所以它有几个请求函数; init
在启动时被调用,一旦它解析 rest
被调用。
app.controller = function () {
// changed from this. to var so it's accessible inside the then function
var eventlist = m.prop([]);
// load initial data
var init = function () {
m.request({method: "GET", url: "first-data.json"}).
// assign the result to the getter/setter
then(eventlist).
// send the request for the rest of the data
then(rest)
;
};
// load the rest of the data
var rest = function () {
m.request({method: "GET", url: "rest-of-data.json"}).
// concat the resulting array with the current one
then(function (result) {
eventlist(
eventlist().concat(result)
);
})
;
};
init();
// return the eventlist so the view can access it
return {
eventlist: eventlist
}
};