簡體   English   中英

秘銀你好世界MVC示例不起作用

[英]mithril hello world MVC example not working

我在使Mithril hello world MVC示例工作時遇到困難。

這是從Mitrhil主頁復制的代碼。 請注意,我所做的唯一更改是交換了m.request({method: "GET", url: "pages.json"}); 對手動生成的頁面對象的方法調用。

//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);

如您所見,上面我在jsFiddle中的示例不起作用,但是在另一個Mitrhil示例中,todo應用程序jsFiddle可以正常工作。

我認為,基本的MVC Mitrhil示例可以像Todo應用一樣工作,並且可以鏈接到jsFiddle或CodePen示例供用戶進行分叉,這與React中的示例類似。

有一些對pages調用應該是變量引用,因為它是一個數組。 解決方法如下: http : //jsfiddle.net/jug68s27/4/

ctrl.pages() -> ctrl.pages

pages().push(pages().shift()) -> pages.push(pages.shift())

在此示例中,該值不會重繪,因為您沒有使用m.prop ,如果希望更改值,則可以使用var pages = m.prop(''); 現在您可以使用pages().pushctrl.pages().map因為m.prop是一個函數! 請記住,這非常重要,您會經常使用它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM