Javascript mithril hello world MVC示例不起作用
我很难让Mithril hello world MVC示例正常工作 这是我的代码,复制自。注意,我所做的唯一更改是交换Javascript mithril hello world MVC示例不起作用,javascript,html,model-view-controller,mithril.js,Javascript,Html,Model View Controller,Mithril.js,我很难让Mithril hello world MVC示例正常工作 这是我的代码,复制自。注意,我所做的唯一更改是交换m.request({method:“GET”,url:“pages.json”})对手动生成的pages对象的方法调用 //namespace var app = {}; //model app.PageList = function() { var pages = []; pages.push({title: 'page 1', url: '/page1.h
m.request({method:“GET”,url:“pages.json”})代码>对手动生成的pages对象的方法调用
//namespace
var app = {};
//model
app.PageList = function() {
var pages = [];
pages.push({title: 'page 1', url: '/page1.html'});
pages.push({title: 'page 2', url: '/page2.html'});
return pages;
};
//controller
app.controller = function() {
var pages = app.PageList();
return {
pages: pages,
rotate: function() {
pages().push(pages().shift());
}
}
};
//view
app.view = function(ctrl) {
return [
ctrl.pages().map(function(page) {
return m("a", {href: page.url}, page.title);
}),
m("button", {onclick: ctrl.rotate}, "Rotate links")
];
};
//initialize
m.module(document.getElementById("example"), app);
如您所见,我在中的示例不起作用,但另一个Mithhil示例,todo应用程序运行良好
我认为基本的MVC Mithhil示例与Todo应用程序一样工作是有意义的,并且可能会链接到JSFIDLE或CodePen示例,以便用户进行fork,类似于InReact。有一些调用页面
,这些调用应该是变量引用,因为它是一个数组。以下是修复方法:
ctrl.pages()
->ctrl.pages
pages().push(pages().shift())
->pages.push(pages.shift())
在本例中,如果希望更改所使用的值,则不会重新绘制该值,因为您没有使用m.prop
var pages=m.prop(“”);
现在您可以使用pages().push
或ctrl.pages().map
,因为m.prop是一个函数!!!!
记住这一点非常重要,您会经常使用它谢谢,这是否意味着Mithril网站主页上的示例也不正确?as不会m.request({method:“GET”,url:“pages.json”})
返回数组,也不会返回方法。无论哪种方式,在他们的站点上使用一个简单的jsFiddle链接到fork都是一个好主意,可以使用数组,也可以从一个示例端点返回数据。m.request
返回一个GetterSetter,它是一个函数,因此当您将其更改为数组时,问题就出现了。使用JSFIDLE作为示例是个好主意。如果您愿意,可以在github上为其打开一个问题(或提出请求)!