Javascript 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

我很难让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.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上为其打开一个问题(或提出请求)!